| 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) |
| }) |
| }) |
| } |