1'use strict'; 2require('../common'); 3const assert = require('assert'); 4const { spawnSync } = require('child_process'); 5const { Worker } = require('worker_threads'); 6 7// Test that 'exit' events for Workers are not received when the main thread 8// terminates itself through process.exit(). 9 10if (process.argv[2] !== 'child') { 11 const { 12 stdout, stderr, status 13 } = spawnSync(process.execPath, [__filename, 'child'], { encoding: 'utf8' }); 14 assert.strictEqual(stderr, ''); 15 assert.strictEqual(stdout, ''); 16 assert.strictEqual(status, 0); 17} else { 18 const nestedWorker = new Worker('setInterval(() => {}, 100)', { eval: true }); 19 // This console.log() should never fire. 20 nestedWorker.on('exit', () => console.log('exit event received')); 21 nestedWorker.on('online', () => process.exit()); 22} 23