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.
		
		
		
		
		
			
		
			
				
					43 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					43 lines
				
				1.0 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const t = require('tap')
							 | 
						||
| 
								 | 
							
								const { join } = require('path')
							 | 
						||
| 
								 | 
							
								const { fork } = require('child_process')
							 | 
						||
| 
								 | 
							
								const { once } = require('./helper')
							 | 
						||
| 
								 | 
							
								const pino = require('..')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function test (file) {
							 | 
						||
| 
								 | 
							
								  file = join('fixtures', 'broken-pipe', file)
							 | 
						||
| 
								 | 
							
								  t.test(file, { parallel: true }, async ({ equal }) => {
							 | 
						||
| 
								 | 
							
								    const child = fork(join(__dirname, file), { silent: true })
							 | 
						||
| 
								 | 
							
								    child.stdout.destroy()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    child.stderr.pipe(process.stdout)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const res = await once(child, 'close')
							 | 
						||
| 
								 | 
							
								    equal(res, 0) // process exits successfully
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								t.jobs = 42
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('basic.js')
							 | 
						||
| 
								 | 
							
								test('destination.js')
							 | 
						||
| 
								 | 
							
								test('syncfalse.js')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								t.test('let error pass through', ({ equal, plan }) => {
							 | 
						||
| 
								 | 
							
								  plan(3)
							 | 
						||
| 
								 | 
							
								  const stream = pino.destination()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // side effect of the pino constructor is that it will set an
							 | 
						||
| 
								 | 
							
								  // event handler for error
							 | 
						||
| 
								 | 
							
								  pino(stream)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  process.nextTick(() => stream.emit('error', new Error('kaboom')))
							 | 
						||
| 
								 | 
							
								  process.nextTick(() => stream.emit('error', new Error('kaboom')))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  stream.on('error', (err) => {
							 | 
						||
| 
								 | 
							
								    equal(err.message, 'kaboom')
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |