Skip to content

Commit 978fbf9

Browse files
wraithgarGar
authored andcommitted
fix(refactor): don't loop through levels to generate log export
Instead use a test to make sure LEVELS an functions match
1 parent 8e90af0 commit 978fbf9

3 files changed

Lines changed: 49 additions & 29 deletions

File tree

lib/index.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1-
const log = {
2-
LEVELS: [
3-
'notice',
4-
'error',
5-
'warn',
6-
'info',
7-
'verbose',
8-
'http',
9-
'silly',
10-
'pause',
11-
'resume',
12-
],
1+
module.exports = {
2+
log: {
3+
LEVELS: [
4+
'notice',
5+
'error',
6+
'warn',
7+
'info',
8+
'verbose',
9+
'http',
10+
'silly',
11+
'pause',
12+
'resume',
13+
],
14+
error: (...args) => process.emit('log', 'error', ...args),
15+
notice: (...args) => process.emit('log', 'notice', ...args),
16+
warn: (...args) => process.emit('log', 'warn', ...args),
17+
info: (...args) => process.emit('log', 'info', ...args),
18+
verbose: (...args) => process.emit('log', 'verbose', ...args),
19+
http: (...args) => process.emit('log', 'http', ...args),
20+
silly: (...args) => process.emit('log', 'silly', ...args),
21+
pause: (...args) => process.emit('log', 'pause', ...args),
22+
resume: (...args) => process.emit('log', 'resume', ...args),
23+
},
1324
}
14-
for (const level of log.LEVELS) {
15-
log[level] = (...args) => process.emit('log', level, ...args)
16-
}
17-
18-
module.exports = { log }

tap-snapshots/test/index.js.test.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Make sure to inspect the output below. Do not ignore changes!
66
*/
77
'use strict'
8-
exports[`test/index.js TAP > log levels 1`] = `
8+
exports[`test/index.js TAP log > log levels 1`] = `
99
Array [
1010
"notice",
1111
"error",

test/index.js

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,29 @@ const t = require('tap')
22
const { log } = require('../')
33
const { LEVELS } = log
44

5-
t.matchSnapshot(LEVELS, 'log levels')
6-
for (const level of LEVELS) {
7-
t.test(level, t => {
8-
t.match(log[level], Function)
9-
process.once('log', (actual, ...args) => {
10-
t.equal(actual, level, 'emitted log with expected level')
11-
t.same(args, [1, 2, 3], 'got expected args')
12-
t.end()
13-
})
14-
log[level](1, 2, 3)
5+
t.test('log', t => {
6+
t.matchSnapshot(LEVELS, 'log levels')
7+
t.test('all log.LEVELS have a function in log', t => {
8+
for (const level of LEVELS) {
9+
t.test(level, t => {
10+
t.match(log[level], Function)
11+
process.once('log', (actual, ...args) => {
12+
t.equal(actual, level, 'emitted log with expected level')
13+
t.same(args, [1, 'two', [3], { 4: 4 }], 'got expected args')
14+
t.end()
15+
})
16+
log[level](1, 'two', [3], { 4: 4 })
17+
})
18+
}
19+
t.end()
1520
})
16-
}
21+
t.test('all log functions are in log.LEVELS', t => {
22+
t.plan(LEVELS.length)
23+
for (const fn in log) {
24+
if (fn !== 'LEVELS') {
25+
t.ok(LEVELS.includes(fn), `log.${fn} is in LEVELS`)
26+
}
27+
}
28+
})
29+
t.end()
30+
})

0 commit comments

Comments
 (0)