Skip to content

Commit

Permalink
chore: remove unit tests
Browse files Browse the repository at this point in the history
npm usage tests move to test/lib/npm.js
  • Loading branch information
wraithgar committed May 11, 2022
1 parent 3439a94 commit 239083d
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 244 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Make sure to inspect the output below. Do not ignore changes!
*/
'use strict'
exports[`test/lib/utils/npm-usage.js TAP usage basic usage > must match snapshot 1`] = `
exports[`test/lib/npm.js TAP usage basic usage > must match snapshot 1`] = `
npm <command>
Usage:
Expand Down Expand Up @@ -38,10 +38,10 @@ or on the command line via: npm <command> --key=value
More configuration info: npm help config
Configuration fields: npm help 7 config
npm@{VERSION} {BASEDIR}
npm@{VERSION} {BASEDIR}/cli
`

exports[`test/lib/utils/npm-usage.js TAP usage set process.stdout.columns columns=0 > must match snapshot 1`] = `
exports[`test/lib/npm.js TAP usage set process.stdout.columns columns=0 > must match snapshot 1`] = `
npm <command>
Usage:
Expand Down Expand Up @@ -74,10 +74,10 @@ or on the command line via: npm <command> --key=value
More configuration info: npm help config
Configuration fields: npm help 7 config
npm@{VERSION} {BASEDIR}
npm@{VERSION} {BASEDIR}/cli
`

exports[`test/lib/utils/npm-usage.js TAP usage set process.stdout.columns columns=90 > must match snapshot 1`] = `
exports[`test/lib/npm.js TAP usage set process.stdout.columns columns=90 > must match snapshot 1`] = `
npm <command>
Usage:
Expand Down Expand Up @@ -110,10 +110,10 @@ or on the command line via: npm <command> --key=value
More configuration info: npm help config
Configuration fields: npm help 7 config
npm@{VERSION} {BASEDIR}
npm@{VERSION} {BASEDIR}/cli
`

exports[`test/lib/utils/npm-usage.js TAP usage with browser > must match snapshot 1`] = `
exports[`test/lib/npm.js TAP usage with browser > must match snapshot 1`] = `
npm <command>
Usage:
Expand Down Expand Up @@ -146,10 +146,10 @@ or on the command line via: npm <command> --key=value
More configuration info: npm help config
Configuration fields: npm help 7 config
npm@{VERSION} {BASEDIR}
npm@{VERSION} {BASEDIR}/cli
`

exports[`test/lib/utils/npm-usage.js TAP usage with long > must match snapshot 1`] = `
exports[`test/lib/npm.js TAP usage with long > must match snapshot 1`] = `
npm <command>
Usage:
Expand Down Expand Up @@ -1036,5 +1036,5 @@ or on the command line via: npm <command> --key=value
More configuration info: npm help config
Configuration fields: npm help 7 config
npm@{VERSION} {BASEDIR}
npm@{VERSION} {BASEDIR}/cli
`
4 changes: 4 additions & 0 deletions test/fixtures/mock-registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,10 @@ class MockRegistry {
}).reply(200, { ...manifest, users })
}

ping ({ body = {}, responseCode = 200 } = {}) {
this.nock = this.nock.get('/-/ping?write=true').reply(responseCode, body)
}

async package ({ manifest, times = 1, query, tarballs }) {
let nock = this.nock
const spec = npa(manifest.name)
Expand Down
154 changes: 54 additions & 100 deletions test/lib/commands/ping.js
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')
})
58 changes: 58 additions & 0 deletions test/lib/npm.js
Original file line number Diff line number Diff line change
Expand Up @@ -654,3 +654,61 @@ t.test('implicit workspace accept', async t => {
})
await t.rejects(mock.npm.exec('org', []), /.*Usage/)
})

t.test('usage', async t => {
const { npm } = await loadMockNpm(t)
t.afterEach(() => {
npm.config.set('viewer', null)
npm.config.set('long', false)
npm.config.set('userconfig', '/some/config/file/.npmrc')
})
const { dirname } = require('path')
const basedir = dirname(dirname(dirname(__dirname)))
t.cleanSnapshot = str => str.split(basedir).join('{BASEDIR}')
.split(require('../../package.json').version).join('{VERSION}')

npm.config.set('viewer', null)
npm.config.set('long', false)
npm.config.set('userconfig', '/some/config/file/.npmrc')

t.test('basic usage', async t => {
t.matchSnapshot(await npm.usage)
t.end()
})

t.test('with browser', async t => {
npm.config.set('viewer', 'browser')
t.matchSnapshot(await npm.usage)
t.end()
})

t.test('with long', async t => {
npm.config.set('long', true)
t.matchSnapshot(await npm.usage)
t.end()
})

t.test('set process.stdout.columns', async t => {
const { columns } = process.stdout
t.teardown(() => {
Object.defineProperty(process.stdout, 'columns', {
value: columns,
enumerable: true,
configurable: true,
writable: true,
})
})
const cases = [0, 90]
for (const cols of cases) {
t.test(`columns=${cols}`, async t => {
Object.defineProperty(process.stdout, 'columns', {
value: cols,
enumerable: true,
configurable: true,
writable: true,
})
t.matchSnapshot(await npm.usage)
})
}
})
})
39 changes: 0 additions & 39 deletions test/lib/utils/is-windows.js

This file was deleted.

0 comments on commit 239083d

Please sign in to comment.