1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const { Worker, workerData } = require('worker_threads');
5
6// Test that 'exit' events for nested Workers are not received when a Worker
7// terminates itself through process.exit().
8
9if (workerData === null) {
10  const nestedWorkerExitCounter = new Int32Array(new SharedArrayBuffer(4));
11  const w = new Worker(__filename, { workerData: nestedWorkerExitCounter });
12  w.on('exit', common.mustCall(() => {
13    assert.strictEqual(nestedWorkerExitCounter[0], 0);
14  }));
15} else {
16  const nestedWorker = new Worker('setInterval(() => {}, 100)', { eval: true });
17  // The counter should never be increased here.
18  nestedWorker.on('exit', () => workerData[0]++);
19  nestedWorker.on('online', () => process.exit());
20}
21