|
|
|
var tap = require('tap')
|
|
|
|
var log = require('../')
|
|
|
|
|
|
|
|
var result = []
|
|
|
|
var logEvents = []
|
|
|
|
var logInfoEvents = []
|
|
|
|
var logPrefixEvents = []
|
|
|
|
|
|
|
|
var util = require('util')
|
|
|
|
|
|
|
|
var resultExpect =
|
|
|
|
[ '\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[7msill\u001b[0m \u001b[0m\u001b[35msilly prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[34m\u001b[40mverb\u001b[0m \u001b[0m\u001b[35mverbose prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[32minfo\u001b[0m \u001b[0m\u001b[35minfo prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[32m\u001b[40mhttp\u001b[0m \u001b[0m\u001b[35mhttp prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[30m\u001b[43mWARN\u001b[0m \u001b[0m\u001b[35mwarn prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[31m\u001b[40mERR!\u001b[0m \u001b[0m\u001b[35merror prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[32minfo\u001b[0m \u001b[0m\u001b[35minfo prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[32m\u001b[40mhttp\u001b[0m \u001b[0m\u001b[35mhttp prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[30m\u001b[43mWARN\u001b[0m \u001b[0m\u001b[35mwarn prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[31m\u001b[40mERR!\u001b[0m \u001b[0m\u001b[35merror prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[31m\u001b[40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m This is a longer\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[31m\u001b[40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m message, with some details\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[31m\u001b[40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m and maybe a stack.\n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u001b[31m\u001b[40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m \n',
|
|
|
|
'\u001b[0m\u001b[37m\u001b[40mnpm\u001b[0m \u001b[0m\u0007noise\u001b[0m\u001b[35m\u001b[0m LOUD NOISES\n',
|
|
|
|
'\u001b[0m' ]
|
|
|
|
|
|
|
|
var logPrefixEventsExpect =
|
|
|
|
[ { id: 2,
|
|
|
|
level: 'info',
|
|
|
|
prefix: 'info prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 9,
|
|
|
|
level: 'info',
|
|
|
|
prefix: 'info prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 16,
|
|
|
|
level: 'info',
|
|
|
|
prefix: 'info prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] } ]
|
|
|
|
|
|
|
|
// should be the same.
|
|
|
|
var logInfoEventsExpect = logPrefixEventsExpect
|
|
|
|
|
|
|
|
var logEventsExpect =
|
|
|
|
[ { id: 0,
|
|
|
|
level: 'silly',
|
|
|
|
prefix: 'silly prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 1,
|
|
|
|
level: 'verbose',
|
|
|
|
prefix: 'verbose prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 2,
|
|
|
|
level: 'info',
|
|
|
|
prefix: 'info prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 3,
|
|
|
|
level: 'http',
|
|
|
|
prefix: 'http prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 4,
|
|
|
|
level: 'warn',
|
|
|
|
prefix: 'warn prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 5,
|
|
|
|
level: 'error',
|
|
|
|
prefix: 'error prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 6,
|
|
|
|
level: 'silent',
|
|
|
|
prefix: 'silent prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 7,
|
|
|
|
level: 'silly',
|
|
|
|
prefix: 'silly prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 8,
|
|
|
|
level: 'verbose',
|
|
|
|
prefix: 'verbose prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 9,
|
|
|
|
level: 'info',
|
|
|
|
prefix: 'info prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 10,
|
|
|
|
level: 'http',
|
|
|
|
prefix: 'http prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 11,
|
|
|
|
level: 'warn',
|
|
|
|
prefix: 'warn prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 12,
|
|
|
|
level: 'error',
|
|
|
|
prefix: 'error prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 13,
|
|
|
|
level: 'silent',
|
|
|
|
prefix: 'silent prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 14,
|
|
|
|
level: 'silly',
|
|
|
|
prefix: 'silly prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 15,
|
|
|
|
level: 'verbose',
|
|
|
|
prefix: 'verbose prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 16,
|
|
|
|
level: 'info',
|
|
|
|
prefix: 'info prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 17,
|
|
|
|
level: 'http',
|
|
|
|
prefix: 'http prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 18,
|
|
|
|
level: 'warn',
|
|
|
|
prefix: 'warn prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 19,
|
|
|
|
level: 'error',
|
|
|
|
prefix: 'error prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 20,
|
|
|
|
level: 'silent',
|
|
|
|
prefix: 'silent prefix',
|
|
|
|
message: 'x = {"foo":{"bar":"baz"}}',
|
|
|
|
messageRaw: [ 'x = %j', { foo: { bar: 'baz' } } ] },
|
|
|
|
{ id: 21,
|
|
|
|
level: 'error',
|
|
|
|
prefix: '404',
|
|
|
|
message: 'This is a longer\nmessage, with some details\nand maybe a stack.\n',
|
|
|
|
messageRaw: [ 'This is a longer\nmessage, with some details\nand maybe a stack.\n' ] },
|
|
|
|
{ id: 22,
|
|
|
|
level: 'noise',
|
|
|
|
prefix: false,
|
|
|
|
message: 'LOUD NOISES',
|
|
|
|
messageRaw: [ 'LOUD NOISES' ] } ]
|
|
|
|
|
|
|
|
var Stream = require('stream').Stream
|
|
|
|
var s = new Stream()
|
|
|
|
s.write = function (m) {
|
|
|
|
result.push(m)
|
|
|
|
}
|
|
|
|
|
|
|
|
s.writable = true
|
|
|
|
s.isTTY = true
|
|
|
|
s.end = function () {}
|
|
|
|
|
|
|
|
log.stream = s
|
|
|
|
|
|
|
|
log.heading = 'npm'
|
|
|
|
|
|
|
|
|
|
|
|
tap.test('basic', function (t) {
|
|
|
|
log.on('log', logEvents.push.bind(logEvents))
|
|
|
|
log.on('log.info', logInfoEvents.push.bind(logInfoEvents))
|
|
|
|
log.on('info prefix', logPrefixEvents.push.bind(logPrefixEvents))
|
|
|
|
|
|
|
|
console.error('log.level=silly')
|
|
|
|
log.level = 'silly'
|
|
|
|
log.silly('silly prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.verbose('verbose prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.info('info prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.http('http prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.warn('warn prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.error('error prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.silent('silent prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
|
|
|
|
console.error('log.level=silent')
|
|
|
|
log.level = 'silent'
|
|
|
|
log.silly('silly prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.verbose('verbose prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.info('info prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.http('http prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.warn('warn prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.error('error prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.silent('silent prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
|
|
|
|
console.error('log.level=info')
|
|
|
|
log.level = 'info'
|
|
|
|
log.silly('silly prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.verbose('verbose prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.info('info prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.http('http prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.warn('warn prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.error('error prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.silent('silent prefix', 'x = %j', {foo:{bar:'baz'}})
|
|
|
|
log.error('404', 'This is a longer\n'+
|
|
|
|
'message, with some details\n'+
|
|
|
|
'and maybe a stack.\n')
|
|
|
|
log.addLevel('noise', 10000, {beep: true})
|
|
|
|
log.noise(false, 'LOUD NOISES')
|
|
|
|
|
|
|
|
t.deepEqual(result.join('').trim(), resultExpect.join('').trim(), 'result')
|
|
|
|
t.deepEqual(log.record, logEventsExpect, 'record')
|
|
|
|
t.deepEqual(logEvents, logEventsExpect, 'logEvents')
|
|
|
|
t.deepEqual(logInfoEvents, logInfoEventsExpect, 'logInfoEvents')
|
|
|
|
t.deepEqual(logPrefixEvents, logPrefixEventsExpect, 'logPrefixEvents')
|
|
|
|
|
|
|
|
t.end()
|
|
|
|
})
|