mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.8 KiB
72 lines
1.8 KiB
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)
|
|
})
|
|
})
|
|
}
|
|
|