diff options
Diffstat (limited to 'deps/node/deps/npm/test/tap/url-dependencies.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/url-dependencies.js | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/url-dependencies.js b/deps/node/deps/npm/test/tap/url-dependencies.js new file mode 100644 index 00000000..66b3e1a6 --- /dev/null +++ b/deps/node/deps/npm/test/tap/url-dependencies.js @@ -0,0 +1,113 @@ +var fs = require('graceful-fs') +var path = require('path') + +var mkdirp = require('mkdirp') +var mr = require('npm-registry-mock') +var osenv = require('osenv') +var rimraf = require('rimraf') +var test = require('tap').test + +var common = require('../common-tap') +var server + +var pkg = path.resolve(__dirname, 'url-dependencies') + +var json = { + author: 'Steve Mason', + name: 'url-dependencies', + version: '0.0.0', + dependencies: { + underscore: common.registry + '/underscore/-/underscore-1.3.1.tgz' + } +} + +var mockRoutes = { + 'get': { + '/underscore/-/underscore-1.3.1.tgz': [200] + } +} + +test('setup', function (t) { + mr({ port: common.port, mocks: mockRoutes }, function (er, s) { + server = s + t.end() + }) +}) + +test('url-dependencies: download first time', function (t) { + setup() + + performInstall(t, 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) { + setup() + + performInstall(t, function () { + performInstall(t, function (output) { + if (tarballWasFetched(output)) { + t.fail('Tarball was fetched second time around') + } else { + t.pass('Tarball was not fetched') + } + t.end() + }) + }) +}) + +test('cleanup', function (t) { + server.close() + cleanup() + t.end() +}) + +function cleanup () { + // windows fix for locked files + process.chdir(osenv.tmpdir()) + rimraf.sync(path.resolve(pkg)) +} + +function setup () { + cleanup() + mkdirp.sync(pkg) + fs.writeFileSync( + path.join(pkg, 'package.json'), + JSON.stringify(json, null, 2) + ) +} + +function tarballWasFetched (output) { + return output.indexOf( + 'GET 200 ' + + common.registry + + '/underscore/-/underscore-1.3.1.tgz' + ) > -1 +} + +function performInstall (t, cb) { + var opts = { + cwd: pkg, + env: { + npm_config_registry: common.registry, + npm_config_cache_lock_stale: 1000, + npm_config_cache_lock_wait: 1000, + npm_config_loglevel: 'http', + HOME: process.env.HOME, + Path: process.env.PATH, + PATH: process.env.PATH + } + } + common.npm(['install'], opts, function (err, code, stdout, stderr) { + t.ifError(err, 'install success') + t.notOk(code, 'npm install exited with code 0') + + cb(stderr) + }) +} |