diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-04-03 15:43:32 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-04-03 15:45:57 +0200 |
commit | 71e285b94c7edaa43aa8115965cf5a36b8e0f80a (patch) | |
tree | 7d4aa9d0d5aff686b106cd5da72ba77960c4af43 /deps/node/deps/npm/test/tap/builtin-config.js | |
parent | 7dadf9356b4f3f4137ce982ea5bb960283116e9a (diff) | |
download | akono-71e285b94c7edaa43aa8115965cf5a36b8e0f80a.tar.gz akono-71e285b94c7edaa43aa8115965cf5a36b8e0f80a.tar.bz2 akono-71e285b94c7edaa43aa8115965cf5a36b8e0f80a.zip |
Node.js v11.13.0
Diffstat (limited to 'deps/node/deps/npm/test/tap/builtin-config.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/builtin-config.js | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/builtin-config.js b/deps/node/deps/npm/test/tap/builtin-config.js new file mode 100644 index 00000000..b960ed03 --- /dev/null +++ b/deps/node/deps/npm/test/tap/builtin-config.js @@ -0,0 +1,136 @@ +var fs = require('fs') + +if (process.argv[2] === 'write-builtin') { + var pid = process.argv[3] + fs.writeFileSync('npmrc', 'foo=bar\npid=' + pid + '\n') + process.exit(0) +} + +var common = require('../common-tap.js') +var path = require('path') +var rimraf = require('rimraf') +var mkdirp = require('mkdirp') +var folder = path.resolve(__dirname, 'builtin-config') +var test = require('tap').test +var npm = path.resolve(__dirname, '../..') +var spawn = require('child_process').spawn +var node = common.nodeBin + +test('setup', function (t) { + t.plan(1) + rimraf.sync(folder) + mkdirp.sync(folder + '/first') + mkdirp.sync(folder + '/second') + mkdirp.sync(folder + '/cache') + mkdirp.sync(folder + '/tmp') + + t.pass('finished setup') + t.end() +}) + +test('install npm into first folder', function (t) { + t.plan(1) + var args = ['install', npm, '-g', + '--prefix=' + folder + '/first', + '--ignore-scripts', + '--cache=' + folder + '/cache', + '--tmp=' + folder + '/tmp', + '--loglevel=warn', + '--progress'] + common.npm(args, {}, function (er, code) { + if (er) throw er + t.equal(code, 0) + t.end() + }) +}) + +test('write npmrc file', function (t) { + t.plan(1) + common.npm(['explore', 'npm', '-g', + '--prefix=' + folder + '/first', + '--cache=' + folder + '/cache', + '--tmp=' + folder + '/tmp', + '--', node, __filename, 'write-builtin', process.pid + ], + {'stdio': 'inherit'}, + function (er, code) { + if (er) throw er + t.equal(code, 0) + t.end() + }) +}) + +test('use first npm to install second npm', function (t) { + t.plan(3) + // get the root location + common.npm( + [ + 'root', '-g', + '--prefix=' + folder + '/first', + '--cache=' + folder + '/cache', + '--tmp=' + folder + '/tmp' + ], + {}, + function (er, code, so) { + if (er) throw er + t.equal(code, 0, 'got npm root') + var root = so.trim() + t.ok(fs.statSync(root).isDirectory(), 'npm root is dir') + + var bin = path.resolve(root, 'npm/bin/npm-cli.js') + spawn( + node, + [ + bin, + 'install', npm, + '-g', + '--ignore-scripts', + '--prefix=' + folder + '/second', + '--cache=' + folder + '/cache', + '--tmp=' + folder + '/tmp' + ], + {} + ) + .on('error', function (er) { throw er }) + .on('close', function (code) { + t.equal(code, 0, 'second npm install') + t.end() + }) + } + ) +}) + +test('verify that the builtin config matches', function (t) { + t.plan(3) + common.npm([ 'root', '-g', + '--prefix=' + folder + '/first', + '--cache=' + folder + '/cache', + '--tmp=' + folder + '/tmp' + ], {}, + function (er, code, so) { + if (er) throw er + t.equal(code, 0) + var firstRoot = so.trim() + common.npm([ 'root', '-g', + '--prefix=' + folder + '/second', + '--cache=' + folder + '/cache', + '--tmp=' + folder + '/tmp' + ], {}, + function (er, code, so) { + if (er) throw er + t.equal(code, 0) + var secondRoot = so.trim() + var firstRc = path.resolve(firstRoot, 'npm', 'npmrc') + var secondRc = path.resolve(secondRoot, 'npm', 'npmrc') + var firstData = fs.readFileSync(firstRc, 'utf8').split(/\r?\n/) + var secondData = fs.readFileSync(secondRc, 'utf8').split(/\r?\n/) + t.isDeeply(firstData, secondData) + t.end() + }) + }) +}) + +test('clean', function (t) { + rimraf.sync(folder) + t.end() +}) |