Projektstart
This commit is contained in:
107
backend/node_modules/pino/test/diagnostics.test.js
generated
vendored
Normal file
107
backend/node_modules/pino/test/diagnostics.test.js
generated
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
'use strict'
|
||||
|
||||
const test = require('node:test')
|
||||
const os = require('node:os')
|
||||
const diagChan = require('node:diagnostics_channel')
|
||||
const { AsyncLocalStorage } = require('node:async_hooks')
|
||||
const { Writable } = require('node:stream')
|
||||
const tspl = require('@matteo.collina/tspl')
|
||||
const pino = require('../pino')
|
||||
|
||||
const hostname = os.hostname()
|
||||
const { pid } = process
|
||||
const AS_JSON_START = 'tracing:pino_asJson:start'
|
||||
const AS_JSON_END = 'tracing:pino_asJson:end'
|
||||
|
||||
// Skip tests if diagnostics_channel.tracingChannel is not available (Node < 18.19)
|
||||
const skip = typeof diagChan.tracingChannel !== 'function'
|
||||
|
||||
test.beforeEach(ctx => {
|
||||
ctx.pino = {
|
||||
ts: 1757512800000, // 2025-09-10T10:00:00.000-05:00
|
||||
now: Date.now
|
||||
}
|
||||
|
||||
Date.now = () => ctx.pino.ts
|
||||
|
||||
ctx.pino.dest = new Writable({
|
||||
objectMode: true,
|
||||
write (data, enc, cb) {
|
||||
cb()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
test.afterEach(ctx => {
|
||||
Date.now = ctx.pino.now
|
||||
})
|
||||
|
||||
test('asJson emits events', { skip }, async (t) => {
|
||||
const plan = tspl(t, { plan: 8 })
|
||||
const { dest } = t.pino
|
||||
const logger = pino({}, dest)
|
||||
const expectedArguments = [
|
||||
{},
|
||||
'testing',
|
||||
30,
|
||||
`,"time":${t.pino.ts}`
|
||||
]
|
||||
|
||||
let startEvent
|
||||
diagChan.subscribe(AS_JSON_START, startHandler)
|
||||
diagChan.subscribe(AS_JSON_END, endHandler)
|
||||
|
||||
logger.info('testing')
|
||||
await plan
|
||||
|
||||
diagChan.unsubscribe(AS_JSON_START, startHandler)
|
||||
diagChan.unsubscribe(AS_JSON_END, endHandler)
|
||||
|
||||
function startHandler (event) {
|
||||
startEvent = event
|
||||
plan.equal(Object.prototype.toString.call(event.instance), '[object Pino]')
|
||||
plan.equal(event.instance === logger, true)
|
||||
plan.deepStrictEqual(Array.from(event.arguments ?? []), expectedArguments)
|
||||
}
|
||||
|
||||
function endHandler (event) {
|
||||
plan.equal(Object.prototype.toString.call(event.instance), '[object Pino]')
|
||||
plan.equal(event.instance === logger, true)
|
||||
plan.deepStrictEqual(Array.from(event.arguments ?? []), expectedArguments)
|
||||
plan.equal(
|
||||
event.result,
|
||||
`{"level":30,"time":${t.pino.ts},"pid":${pid},"hostname":"${hostname}","msg":"testing"}\n`
|
||||
)
|
||||
|
||||
plan.equal(event.arguments === startEvent.arguments, true, 'same event object is supplied to both events')
|
||||
}
|
||||
})
|
||||
|
||||
test('asJson context is not lost', { skip }, async (t) => {
|
||||
const plan = tspl(t, { plan: 2 })
|
||||
const { dest } = t.pino
|
||||
const logger = pino({}, dest)
|
||||
const asyncLocalStorage = new AsyncLocalStorage()
|
||||
const localStore = { foo: 'bar' }
|
||||
|
||||
diagChan.subscribe(AS_JSON_START, startHandler)
|
||||
diagChan.subscribe(AS_JSON_END, endHandler)
|
||||
|
||||
asyncLocalStorage.run(localStore, () => {
|
||||
logger.info('testing')
|
||||
})
|
||||
await plan
|
||||
|
||||
diagChan.unsubscribe(AS_JSON_START, startHandler)
|
||||
diagChan.unsubscribe(AS_JSON_END, endHandler)
|
||||
|
||||
function startHandler () {
|
||||
const store = asyncLocalStorage.getStore()
|
||||
plan.equal(store === localStore, true)
|
||||
}
|
||||
|
||||
function endHandler () {
|
||||
const store = asyncLocalStorage.getStore()
|
||||
plan.equal(store === localStore, true)
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user