diff options
Diffstat (limited to 'test/tap')
-rw-r--r-- | test/tap/url-dependencies.js | 72 | ||||
-rw-r--r-- | test/tap/url-dependencies/package.json | 8 |
2 files changed, 80 insertions, 0 deletions
diff --git a/test/tap/url-dependencies.js b/test/tap/url-dependencies.js new file mode 100644 index 000000000..0c2078aff --- /dev/null +++ b/test/tap/url-dependencies.js @@ -0,0 +1,72 @@ +var test = require("tap").test +var rimraf = require("rimraf") + +var mr = require("npm-registry-mock") + +var spawn = require("child_process").spawn +var npm = require.resolve("../../bin/npm-cli.js") +var node = process.execPath +var pkg = "./url-dependencies" + +var mockRoutes = { + "get": { + "/underscore/-/underscore-1.3.1.tgz": [200] + } +} + +test("url-dependencies: download first time", function(t) { + rimraf.sync(__dirname + "/url-dependencies/node_modules") + + performInstall(function(output){ + if(!tarballWasFetched(output)){ + t.fail("Tarball was not fetched") + }else{ + t.pass("Tarball was fetched") + } + t.end() + }) +}) + +test("url-dependencies: do not download subsequent times", function(t) { + rimraf.sync(__dirname + "/url-dependencies/node_modules") + + performInstall(function(){ + performInstall(function(output){ + if(tarballWasFetched(output)){ + t.fail("Tarball was fetched second time around") + }else{ + t.pass("Tarball was not fetched") + } + t.end() + }) + }) +}) + +function tarballWasFetched(output){ + return output.indexOf("http GET http://localhost:1337/underscore/-/underscore-1.3.1.tgz") > -1 +} + +function performInstall (cb) { + mr({port: 1337, mocks: mockRoutes}, function(s){ + var output = "" + , child = spawn(node, [npm, "install"], { + cwd: pkg, + env: { + npm_config_registry: "http://localhost:1337", + npm_config_cache_lock_stale: 1000, + npm_config_cache_lock_wait: 1000, + HOME: process.env.HOME, + Path: process.env.PATH, + PATH: process.env.PATH + } + }) + + child.stderr.on("data", function(data){ + output += data.toString() + }) + child.on("close", function () { + s.close() + cb(output) + }) + }) +} diff --git a/test/tap/url-dependencies/package.json b/test/tap/url-dependencies/package.json new file mode 100644 index 000000000..96ae3e247 --- /dev/null +++ b/test/tap/url-dependencies/package.json @@ -0,0 +1,8 @@ +{ + "author": "Steve Mason", + "name": "url-dependencies", + "version": "0.0.0", + "dependencies": { + "underscore": "http://localhost:1337/underscore/-/underscore-1.3.1.tgz" + } +} |