You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.7 KiB
122 lines
3.7 KiB
4 years ago
|
'use strict'
|
||
|
|
||
|
/* eslint no-prototype-builtins: 0 */
|
||
|
|
||
|
const { test } = require('tap')
|
||
|
const { sink, once } = require('./helper')
|
||
|
const pino = require('../')
|
||
|
|
||
|
test('pino exposes standard time functions', async ({ ok }) => {
|
||
|
ok(pino.stdTimeFunctions)
|
||
|
ok(pino.stdTimeFunctions.epochTime)
|
||
|
ok(pino.stdTimeFunctions.unixTime)
|
||
|
ok(pino.stdTimeFunctions.nullTime)
|
||
|
ok(pino.stdTimeFunctions.isoTime)
|
||
|
})
|
||
|
|
||
|
test('pino accepts external time functions', async ({ is }) => {
|
||
|
const opts = {
|
||
|
timestamp: () => ',"time":"none"'
|
||
|
}
|
||
|
const stream = sink()
|
||
|
const instance = pino(opts, stream)
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), true)
|
||
|
is(result.time, 'none')
|
||
|
})
|
||
|
|
||
|
test('pino accepts external time functions with custom label', async ({ is }) => {
|
||
|
const opts = {
|
||
|
timestamp: () => ',"custom-time-label":"none"'
|
||
|
}
|
||
|
const stream = sink()
|
||
|
const instance = pino(opts, stream)
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('custom-time-label'), true)
|
||
|
is(result['custom-time-label'], 'none')
|
||
|
})
|
||
|
|
||
|
test('inserts timestamp by default', async ({ ok, is }) => {
|
||
|
const stream = sink()
|
||
|
const instance = pino(stream)
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), true)
|
||
|
ok(new Date(result.time) <= new Date(), 'time is greater than timestamp')
|
||
|
is(result.msg, 'foobar')
|
||
|
})
|
||
|
|
||
|
test('omits timestamp when timestamp option is false', async ({ is }) => {
|
||
|
const stream = sink()
|
||
|
const instance = pino({ timestamp: false }, stream)
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), false)
|
||
|
is(result.msg, 'foobar')
|
||
|
})
|
||
|
|
||
|
test('inserts timestamp when timestamp option is true', async ({ ok, is }) => {
|
||
|
const stream = sink()
|
||
|
const instance = pino({ timestamp: true }, stream)
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), true)
|
||
|
ok(new Date(result.time) <= new Date(), 'time is greater than timestamp')
|
||
|
is(result.msg, 'foobar')
|
||
|
})
|
||
|
|
||
|
test('child inserts timestamp by default', async ({ ok, is }) => {
|
||
|
const stream = sink()
|
||
|
const logger = pino(stream)
|
||
|
const instance = logger.child({ component: 'child' })
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), true)
|
||
|
ok(new Date(result.time) <= new Date(), 'time is greater than timestamp')
|
||
|
is(result.msg, 'foobar')
|
||
|
})
|
||
|
|
||
|
test('child omits timestamp with option', async ({ is }) => {
|
||
|
const stream = sink()
|
||
|
const logger = pino({ timestamp: false }, stream)
|
||
|
const instance = logger.child({ component: 'child' })
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), false)
|
||
|
is(result.msg, 'foobar')
|
||
|
})
|
||
|
|
||
|
test('pino.stdTimeFunctions.unixTime returns seconds based timestamps', async ({ is }) => {
|
||
|
const opts = {
|
||
|
timestamp: pino.stdTimeFunctions.unixTime
|
||
|
}
|
||
|
const stream = sink()
|
||
|
const instance = pino(opts, stream)
|
||
|
const now = Date.now
|
||
|
Date.now = () => 1531069919686
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), true)
|
||
|
is(result.time, 1531069920)
|
||
|
Date.now = now
|
||
|
})
|
||
|
|
||
|
test('pino.stdTimeFunctions.isoTime returns ISO 8601 timestamps', async ({ is }) => {
|
||
|
const opts = {
|
||
|
timestamp: pino.stdTimeFunctions.isoTime
|
||
|
}
|
||
|
const stream = sink()
|
||
|
const instance = pino(opts, stream)
|
||
|
const ms = 1531069919686
|
||
|
const now = Date.now
|
||
|
Date.now = () => ms
|
||
|
const iso = new Date(ms).toISOString()
|
||
|
instance.info('foobar')
|
||
|
const result = await once(stream, 'data')
|
||
|
is(result.hasOwnProperty('time'), true)
|
||
|
is(result.time, iso)
|
||
|
Date.now = now
|
||
|
})
|