37 lines
925 B
JavaScript
37 lines
925 B
JavaScript
'use strict'
|
|
|
|
const test = require('node:test')
|
|
const assert = require('node:assert')
|
|
const { join } = require('node:path')
|
|
const { once } = require('node:events')
|
|
const { setImmediate: immediate } = require('node:timers/promises')
|
|
|
|
const pino = require('../../')
|
|
|
|
test('pino.transport emits error if the worker exits with 0 unexpectably', async (t) => {
|
|
// This test will take 10s, because flushSync waits for 10s
|
|
const transport = pino.transport({
|
|
target: join(__dirname, '..', 'fixtures', 'crashing-transport.js'),
|
|
sync: true
|
|
})
|
|
t.after(transport.end.bind(transport))
|
|
|
|
await once(transport, 'ready')
|
|
|
|
let maybeError
|
|
transport.on('error', (err) => {
|
|
maybeError = err
|
|
})
|
|
|
|
const logger = pino(transport)
|
|
for (let i = 0; i < 100000; i++) {
|
|
logger.info('hello')
|
|
}
|
|
|
|
await once(transport.worker, 'exit')
|
|
|
|
await immediate()
|
|
|
|
assert.equal(maybeError.message, 'the worker has exited')
|
|
})
|