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