From ee1e5b9c472d5cf0565ec4cb8f082b7ddd73160a Mon Sep 17 00:00:00 2001 From: Gar Date: Fri, 7 May 2021 13:10:48 -0700 Subject: [PATCH] fix(tests): use config defaults The mocked npm now uses all config defaults, ensuring we don't have bugs from the disconnect between our currently heavily mocked tests and reality. Eventually the npm mock will be closer to reality, this moves the needle. --- lib/dist-tag.js | 1 + lib/outdated.js | 2 +- tap-snapshots/test/lib/view.js.test.cjs | 4 ++-- test/fixtures/mock-npm.js | 8 +++++--- test/lib/dist-tag.js | 9 ++++++--- test/lib/view.js | 15 ++------------- 6 files changed, 17 insertions(+), 22 deletions(-) diff --git a/lib/dist-tag.js b/lib/dist-tag.js index 64e8abc013745..635b3d91d0fdb 100644 --- a/lib/dist-tag.js +++ b/lib/dist-tag.js @@ -98,6 +98,7 @@ class DistTag extends BaseCommand { spec = npa(spec || '') const version = spec.rawSpec const defaultTag = tag || this.npm.config.get('tag') + console.log(`defaultTag`, defaultTag) log.verbose('dist-tag add', defaultTag, 'to', spec.name + '@' + version) diff --git a/lib/outdated.js b/lib/outdated.js index 9b656d2aeede4..3a23b7e995ec3 100644 --- a/lib/outdated.js +++ b/lib/outdated.js @@ -149,7 +149,7 @@ class Outdated extends BaseCommand { : edge.dev ? 'devDependencies' : 'dependencies' - for (const omitType of this.npm.config.get('omit') || []) { + for (const omitType of this.npm.config.get('omit')) { if (node[omitType]) return } diff --git a/tap-snapshots/test/lib/view.js.test.cjs b/tap-snapshots/test/lib/view.js.test.cjs index 1cdf356356af9..bbfa374ce8ef8 100644 --- a/tap-snapshots/test/lib/view.js.test.cjs +++ b/tap-snapshots/test/lib/view.js.test.cjs @@ -357,7 +357,7 @@ exports[`test/lib/view.js TAP workspaces all workspaces > must match snapshot 1` green@1.0.0 | ACME | deps: 2 | versions: 2 green is a very important color -DEPRECATED!! - true +DEPRECATED ⚠️ - true keywords:colors, green, crayola @@ -425,7 +425,7 @@ exports[`test/lib/view.js TAP workspaces one specific workspace > must match sna green@1.0.0 | ACME | deps: 2 | versions: 2 green is a very important color -DEPRECATED!! - true +DEPRECATED ⚠️ - true keywords:colors, green, crayola diff --git a/test/fixtures/mock-npm.js b/test/fixtures/mock-npm.js index 01f482bde291b..aa8d44020ee36 100644 --- a/test/fixtures/mock-npm.js +++ b/test/fixtures/mock-npm.js @@ -2,6 +2,8 @@ // npm.config You still need a separate flatOptions but this is the first step // to eventually just using npm itself +const realConfig = require('../../lib/utils/config') + const mockLog = { clearProgress: () => {}, disableProgress: () => {}, @@ -25,10 +27,10 @@ const mockNpm = (base = {}) => { config: { // for now just set `find` to what config.find should return // this works cause `find` is not an existing config entry - find: (k) => config[k], - get: (k) => config[k], + find: (k) => ({...realConfig.defaults, ...config})[k], + get: (k) => ({...realConfig.defaults, ...config})[k], set: (k, v) => config[k] = v, - list: [config] + list: [{ ...realConfig.defaults, ...config}] }, } } diff --git a/test/lib/dist-tag.js b/test/lib/dist-tag.js index 701bdc6e48c35..6bc17168cdce0 100644 --- a/test/lib/dist-tag.js +++ b/test/lib/dist-tag.js @@ -68,10 +68,9 @@ const DistTag = t.mock('../../lib/dist-tag.js', { }, }) +const config = {} const npm = mockNpm({ - config: { - global: false, - }, + config, output: msg => { result = result ? [result, msg].join('\n') : msg }, @@ -349,6 +348,10 @@ t.test('add using valid semver range as name', (t) => { t.test('add missing args', (t) => { npm.prefix = t.testdir({}) + config.tag = '' + t.teardown(() => { + delete config.tag + }) distTag.exec(['add', '@scoped/another@7.7.7'], (err) => { t.matchSnapshot(err, 'should exit usage error message') t.end() diff --git a/test/lib/view.js b/test/lib/view.js index eb2beb9ff5864..707ec1f697a4a 100644 --- a/test/lib/view.js +++ b/test/lib/view.js @@ -248,7 +248,7 @@ t.test('should log package info', t => { }, }) const npm = mockNpm({ - config: { global: false }, + config: { unicode: false }, }) const view = new View(npm) @@ -269,7 +269,6 @@ t.test('should log package info', t => { }) const unicodeNpm = mockNpm({ config: { - global: false, unicode: true, }, }) @@ -358,7 +357,6 @@ t.test('should log info of package in current working dir', t => { prefix: testDir, config: { tag: '1.0.0', - global: false, }, }) const view = new View(npm) @@ -389,7 +387,6 @@ t.test('should log info by field name', t => { const jsonNpm = mockNpm({ config: { json: true, - global: false, }, }) @@ -400,9 +397,7 @@ t.test('should log info by field name', t => { packument, }, }) - const npm = mockNpm({ - config: { global: false }, - }) + const npm = mockNpm() const view = new View(npm) t.test('readme', t => { @@ -489,7 +484,6 @@ t.test('throw ENOENT error if package.json misisng', (t) => { const View = t.mock('../../lib/view.js') const npm = mockNpm({ prefix: testDir, - config: { global: false }, }) const view = new View(npm) view.exec([], (err) => { @@ -506,7 +500,6 @@ t.test('throw EJSONPARSE error if package.json not json', (t) => { const View = t.mock('../../lib/view.js') const npm = mockNpm({ prefix: testDir, - config: { global: false }, }) const view = new View(npm) view.exec([], (err) => { @@ -523,7 +516,6 @@ t.test('throw error if package.json has no name', (t) => { const View = t.mock('../../lib/view.js') const npm = mockNpm({ prefix: testDir, - config: { global: false }, }) const view = new View(npm) view.exec([], (err) => { @@ -541,7 +533,6 @@ t.test('throws when unpublished', (t) => { const npm = mockNpm({ config: { tag: '1.0.1', - global: false, }, }) const view = new View(npm) @@ -684,7 +675,6 @@ t.test('completion', async t => { const npm = mockNpm({ config: { tag: '1.0.1', - global: false, }, }) const view = new View(npm) @@ -700,7 +690,6 @@ t.test('no registry completion', async t => { const npm = mockNpm({ config: { tag: '1.0.1', - global: false, }, }) const view = new View(npm)