diff options
Diffstat (limited to 'deps/node/deps/npm/test/tap/config-basic.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/config-basic.js | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/config-basic.js b/deps/node/deps/npm/test/tap/config-basic.js new file mode 100644 index 00000000..0483695c --- /dev/null +++ b/deps/node/deps/npm/test/tap/config-basic.js @@ -0,0 +1,87 @@ +var test = require('tap').test +var npmconf = require('../../lib/config/core.js') +var common = require('./00-config-setup.js') +var path = require('path') + +var projectData = { +} + +var ucData = common.ucData +var envData = common.envData + +var gcData = { 'package-config:foo': 'boo' } + +var biData = {} + +var cli = { foo: 'bar', umask: parseInt('022', 8) } + +var expectNames = [ + 'cli', + 'envData', + 'projectData', + 'ucData', + 'gcData', + 'biData' +] +var expectList = [ + cli, + envData, + projectData, + ucData, + gcData, + biData +] + +var expectSources = { + cli: { data: cli }, + env: { + data: envData, + source: envData, + prefix: '' + }, + project: { + path: path.resolve(__dirname, '..', '..', '.npmrc'), + type: 'ini', + data: projectData + }, + user: { + path: common.userconfig, + type: 'ini', + data: ucData + }, + global: { + path: common.globalconfig, + type: 'ini', + data: gcData + }, + builtin: { data: biData } +} + +function isDeeplyDetails (t, aa, bb, msg, seen) { + if (aa == null && bb == null) return t.pass(msg) + if (typeof bb !== 'object') return t.is(aa, bb, msg) + if (!seen) seen = [] + for (var kk in seen) if (seen[kk] === aa || seen[kk] === bb) return + seen.push(aa, bb) + t.is(Object.keys(aa).length, Object.keys(bb).length, msg + ': # of elements') + Object.keys(bb).forEach(function (key) { + isDeeplyDetails(t, aa[key], bb[key], msg + ' -> ' + key, seen) + }) +} + +test('no builtin', function (t) { + t.comment(process.env) + npmconf.load(cli, function (er, conf) { + if (er) throw er + expectNames.forEach(function (name, ii) { + isDeeplyDetails(t, conf.list[ii], expectList[ii], 'config properties list: ' + name) + }) + isDeeplyDetails(t, conf.sources, expectSources, 'config by source') + t.same(npmconf.rootConf.list, [], 'root configuration is empty') + isDeeplyDetails(t, npmconf.rootConf.root, npmconf.defs.defaults, 'defaults') + isDeeplyDetails(t, conf.root, npmconf.defs.defaults, 'current root config is defaults') + t.is(conf.get('umask'), parseInt('022', 8), 'umask is as expected') + t.is(conf.get('heading'), 'npm', 'config name is as expected') + t.end() + }) +}) |