-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
npm usage tests move to test/lib/npm.js
- Loading branch information
Showing
7 changed files
with
126 additions
and
244 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,113 +1,67 @@ | ||
const t = require('tap') | ||
const { fake: mockNpm } = require('../../fixtures/mock-npm') | ||
const { load: loadMockNpm } = require('../../fixtures/mock-npm.js') | ||
const MockRegistry = require('../../fixtures/mock-registry.js') | ||
|
||
t.test('pings', async t => { | ||
t.plan(6) | ||
|
||
const registry = 'https://registry.npmjs.org' | ||
let noticeCalls = 0 | ||
const Ping = t.mock('../../../lib/commands/ping.js', { | ||
'../../../lib/utils/ping.js': function (spec) { | ||
t.equal(spec.registry, registry, 'passes flatOptions') | ||
return {} | ||
}, | ||
'proc-log': { | ||
notice: (type, spec) => { | ||
++noticeCalls | ||
if (noticeCalls === 1) { | ||
t.equal(type, 'PING', 'should log a PING') | ||
t.equal(spec, registry, 'should log the registry url') | ||
} else { | ||
t.equal(type, 'PONG', 'should log a PONG') | ||
t.match(spec, /\d+ms/, 'should log the elapsed milliseconds') | ||
} | ||
}, | ||
}, | ||
}) | ||
const npm = mockNpm({ | ||
config: { registry }, | ||
flatOptions: { registry }, | ||
t.test('no details', async t => { | ||
const { npm, logs, joinedOutput } = await loadMockNpm(t) | ||
const registry = new MockRegistry({ | ||
tap: t, | ||
registry: npm.config.get('registry'), | ||
}) | ||
const ping = new Ping(npm) | ||
|
||
await ping.exec([]) | ||
t.equal(noticeCalls, 2, 'should have logged 2 lines') | ||
registry.ping() | ||
await npm.exec('ping', []) | ||
t.match(logs.notice, [['PING', 'https://registry.npmjs.org/'], ['PONG', /[0-9]+ms/]]) | ||
t.equal(joinedOutput(), '') | ||
}) | ||
|
||
t.test('pings and logs details', async t => { | ||
t.plan(8) | ||
t.test('with details', async t => { | ||
const { npm, logs, joinedOutput } = await loadMockNpm(t) | ||
const registry = new MockRegistry({ | ||
tap: t, | ||
registry: npm.config.get('registry'), | ||
}) | ||
registry.ping({ body: { test: true } }) | ||
await npm.exec('ping', []) | ||
t.match(logs.notice, [ | ||
['PING', 'https://registry.npmjs.org/'], | ||
['PONG', /[0-9]+ms/], | ||
['PONG', '{\n "test": true\n}'], | ||
]) | ||
t.match(joinedOutput(), '') | ||
}) | ||
|
||
const registry = 'https://registry.npmjs.org' | ||
const details = { extra: 'data' } | ||
let noticeCalls = 0 | ||
const Ping = t.mock('../../../lib/commands/ping.js', { | ||
'../../../lib/utils/ping.js': function (spec) { | ||
t.equal(spec.registry, registry, 'passes flatOptions') | ||
return details | ||
}, | ||
'proc-log': { | ||
notice: (type, spec) => { | ||
++noticeCalls | ||
if (noticeCalls === 1) { | ||
t.equal(type, 'PING', 'should log a PING') | ||
t.equal(spec, registry, 'should log the registry url') | ||
} else if (noticeCalls === 2) { | ||
t.equal(type, 'PONG', 'should log a PONG') | ||
t.match(spec, /\d+ms/, 'should log the elapsed milliseconds') | ||
} else { | ||
t.equal(type, 'PONG', 'should log a PONG') | ||
const parsed = JSON.parse(spec) | ||
t.match(parsed, details, 'should log JSON stringified details') | ||
} | ||
}, | ||
}, | ||
t.test('valid json', async t => { | ||
const { npm, logs, joinedOutput } = await loadMockNpm(t, { | ||
config: { json: true }, | ||
}) | ||
const npm = mockNpm({ | ||
config: { registry }, | ||
flatOptions: { registry }, | ||
const registry = new MockRegistry({ | ||
tap: t, | ||
registry: npm.config.get('registry'), | ||
}) | ||
registry.ping() | ||
await npm.exec('ping', []) | ||
t.match(logs.notice, [['PING', 'https://registry.npmjs.org/'], ['PONG', /[0-9]+ms/]]) | ||
t.match(JSON.parse(joinedOutput()), { | ||
registry: npm.config.get('registry'), | ||
time: /[0-9]+/, | ||
details: {}, | ||
}) | ||
const ping = new Ping(npm) | ||
|
||
await ping.exec([]) | ||
t.equal(noticeCalls, 3, 'should have logged 3 lines') | ||
}) | ||
|
||
t.test('pings and returns json', async t => { | ||
t.plan(9) | ||
|
||
const registry = 'https://registry.npmjs.org' | ||
const details = { extra: 'data' } | ||
let noticeCalls = 0 | ||
const Ping = t.mock('../../../lib/commands/ping.js', { | ||
'../../../lib/utils/ping.js': function (spec) { | ||
t.equal(spec.registry, registry, 'passes flatOptions') | ||
return details | ||
}, | ||
'proc-log': { | ||
notice: (type, spec) => { | ||
++noticeCalls | ||
if (noticeCalls === 1) { | ||
t.equal(type, 'PING', 'should log a PING') | ||
t.equal(spec, registry, 'should log the registry url') | ||
} else { | ||
t.equal(type, 'PONG', 'should log a PONG') | ||
t.match(spec, /\d+ms/, 'should log the elapsed milliseconds') | ||
} | ||
}, | ||
}, | ||
t.test('invalid json', async t => { | ||
const { npm, logs, joinedOutput } = await loadMockNpm(t, { | ||
config: { json: true }, | ||
}) | ||
const npm = mockNpm({ | ||
config: { registry, json: true }, | ||
flatOptions: { registry }, | ||
output: function (spec) { | ||
const parsed = JSON.parse(spec) | ||
t.equal(parsed.registry, registry, 'returns the correct registry url') | ||
t.match(parsed.details, details, 'prints returned details') | ||
t.type(parsed.time, 'number', 'returns time as a number') | ||
}, | ||
const registry = new MockRegistry({ | ||
tap: t, | ||
registry: npm.config.get('registry'), | ||
}) | ||
registry.ping({ body: '{not: real"json]' }) | ||
await npm.exec('ping', []) | ||
t.match(logs.notice, [['PING', 'https://registry.npmjs.org/'], ['PONG', /[0-9]+ms/]]) | ||
t.match(JSON.parse(joinedOutput()), { | ||
registry: npm.config.get('registry'), | ||
time: /[0-9]+/, | ||
details: {}, | ||
}) | ||
const ping = new Ping(npm) | ||
|
||
await ping.exec([]) | ||
t.equal(noticeCalls, 2, 'should have logged 2 lines') | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.