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.8 KiB
			
		
		
			
		
	
	
					122 lines
				
				3.8 KiB
			| 
											3 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 ({ equal }) => { | ||
|  |   const opts = { | ||
|  |     timestamp: () => ',"time":"none"' | ||
|  |   } | ||
|  |   const stream = sink() | ||
|  |   const instance = pino(opts, stream) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('time'), true) | ||
|  |   equal(result.time, 'none') | ||
|  | }) | ||
|  | 
 | ||
|  | test('pino accepts external time functions with custom label', async ({ equal }) => { | ||
|  |   const opts = { | ||
|  |     timestamp: () => ',"custom-time-label":"none"' | ||
|  |   } | ||
|  |   const stream = sink() | ||
|  |   const instance = pino(opts, stream) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('custom-time-label'), true) | ||
|  |   equal(result['custom-time-label'], 'none') | ||
|  | }) | ||
|  | 
 | ||
|  | test('inserts timestamp by default', async ({ ok, equal }) => { | ||
|  |   const stream = sink() | ||
|  |   const instance = pino(stream) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('time'), true) | ||
|  |   ok(new Date(result.time) <= new Date(), 'time is greater than timestamp') | ||
|  |   equal(result.msg, 'foobar') | ||
|  | }) | ||
|  | 
 | ||
|  | test('omits timestamp when timestamp option is false', async ({ equal }) => { | ||
|  |   const stream = sink() | ||
|  |   const instance = pino({ timestamp: false }, stream) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('time'), false) | ||
|  |   equal(result.msg, 'foobar') | ||
|  | }) | ||
|  | 
 | ||
|  | test('inserts timestamp when timestamp option is true', async ({ ok, equal }) => { | ||
|  |   const stream = sink() | ||
|  |   const instance = pino({ timestamp: true }, stream) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('time'), true) | ||
|  |   ok(new Date(result.time) <= new Date(), 'time is greater than timestamp') | ||
|  |   equal(result.msg, 'foobar') | ||
|  | }) | ||
|  | 
 | ||
|  | test('child inserts timestamp by default', async ({ ok, equal }) => { | ||
|  |   const stream = sink() | ||
|  |   const logger = pino(stream) | ||
|  |   const instance = logger.child({ component: 'child' }) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('time'), true) | ||
|  |   ok(new Date(result.time) <= new Date(), 'time is greater than timestamp') | ||
|  |   equal(result.msg, 'foobar') | ||
|  | }) | ||
|  | 
 | ||
|  | test('child omits timestamp with option', async ({ equal }) => { | ||
|  |   const stream = sink() | ||
|  |   const logger = pino({ timestamp: false }, stream) | ||
|  |   const instance = logger.child({ component: 'child' }) | ||
|  |   instance.info('foobar') | ||
|  |   const result = await once(stream, 'data') | ||
|  |   equal(result.hasOwnProperty('time'), false) | ||
|  |   equal(result.msg, 'foobar') | ||
|  | }) | ||
|  | 
 | ||
|  | test('pino.stdTimeFunctions.unixTime returns seconds based timestamps', async ({ equal }) => { | ||
|  |   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') | ||
|  |   equal(result.hasOwnProperty('time'), true) | ||
|  |   equal(result.time, 1531069920) | ||
|  |   Date.now = now | ||
|  | }) | ||
|  | 
 | ||
|  | test('pino.stdTimeFunctions.isoTime returns ISO 8601 timestamps', async ({ equal }) => { | ||
|  |   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') | ||
|  |   equal(result.hasOwnProperty('time'), true) | ||
|  |   equal(result.time, iso) | ||
|  |   Date.now = now | ||
|  | }) |