diff options
Diffstat (limited to 'deps/node/deps/npm/test/tap/github-shortcut.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/github-shortcut.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/github-shortcut.js b/deps/node/deps/npm/test/tap/github-shortcut.js new file mode 100644 index 00000000..641d64f3 --- /dev/null +++ b/deps/node/deps/npm/test/tap/github-shortcut.js @@ -0,0 +1,84 @@ +'use strict' + +const BB = require('bluebird') + +const fs = require('graceful-fs') +const path = require('path') + +const mkdirp = require('mkdirp') +const osenv = require('osenv') +const requireInject = require('require-inject') +const rimraf = require('rimraf') +const test = require('tap').test + +const common = require('../common-tap.js') + +const pkg = path.resolve(__dirname, 'github-shortcut') + +const json = { + name: 'github-shortcut', + version: '0.0.0' +} + +test('setup', function (t) { + setup() + t.end() +}) + +test('github-shortcut', function (t) { + const cloneUrls = [ + ['git://github.com/foo/private.git', 'GitHub shortcuts try git URLs first'], + ['https://github.com/foo/private.git', 'GitHub shortcuts try HTTPS URLs second'], + ['ssh://git@github.com/foo/private.git', 'GitHub shortcuts try SSH third'] + ] + const npm = requireInject.installGlobally('../../lib/npm.js', { + 'pacote/lib/util/git': { + 'revs': (repo, opts) => { + return BB.resolve().then(() => { + const cloneUrl = cloneUrls.shift() + if (cloneUrl) { + t.is(repo, cloneUrl[0], cloneUrl[1]) + } else { + t.fail('too many attempts to clone') + } + throw new Error('git.revs mock fails on purpose') + }) + } + } + }) + + const opts = { + cache: path.resolve(pkg, 'cache'), + prefix: pkg, + registry: common.registry, + loglevel: 'silent' + } + t.plan(2 + cloneUrls.length) + npm.load(opts, function (err) { + t.ifError(err, 'npm loaded without error') + npm.commands.install(['foo/private'], function (err, result) { + t.match(err.message, /mock fails on purpose/, 'mocked install failed as expected') + t.end() + }) + }) +}) + +test('cleanup', function (t) { + cleanup() + t.end() +}) + +function setup () { + cleanup() + mkdirp.sync(pkg) + fs.writeFileSync( + path.join(pkg, 'package.json'), + JSON.stringify(json, null, 2) + ) + process.chdir(pkg) +} + +function cleanup () { + process.chdir(osenv.tmpdir()) + rimraf.sync(pkg) +} |