node/test/parallel/test-trace-exit.js
Antoine du Hamel f951acf624
test: remove unnecessary process.exit calls from test files
PR-URL: https://github.com/nodejs/node/pull/62020
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
2026-03-01 11:33:00 +00:00

55 lines
2.1 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { promisify } = require('util');
const execFile = promisify(require('child_process').execFile);
const { Worker, isMainThread, workerData } = require('worker_threads');
const variant = process.argv[process.argv.length - 1];
switch (true) {
case isMainThread ? variant === 'main-thread-exit' : workerData === 'worker-thread-exit':
return process.exit(0);
case variant.startsWith('worker-thread'): {
const worker = new Worker(__filename, { workerData: variant });
worker.on('error', common.mustNotCall());
worker.on('exit', common.mustCall((code) => {
assert.strictEqual(code, 0);
}));
}
// eslint-disable-next-line no-fallthrough
case variant === 'main-thread':
// eslint-disable-next-line no-fallthrough
case variant === 'main-thread-exit':
// eslint-disable-next-line no-fallthrough
case !isMainThread:
return;
}
(async function() {
for (const { execArgv, variant, warnings } of [
{ execArgv: ['--trace-exit'], variant: 'main-thread-exit', warnings: 1 },
{ execArgv: [], variant: 'main-thread-exit', warnings: 0 },
{ execArgv: ['--trace-exit'], variant: 'main-thread', warnings: 0 },
{ execArgv: [], variant: 'main-thread', warnings: 0 },
{ execArgv: ['--trace-exit'], variant: 'worker-thread-exit', warnings: 1 },
{ execArgv: [], variant: 'worker-thread-exit', warnings: 0 },
{ execArgv: ['--trace-exit'], variant: 'worker-thread', warnings: 0 },
{ execArgv: [], variant: 'worker-thread', warnings: 0 },
]) {
const { stdout, stderr } =
await execFile(process.execPath, [...execArgv, __filename, variant]);
assert.strictEqual(stdout, '');
const actualWarnings =
stderr.match(/WARNING: Exited the environment with code 0/g);
if (warnings === 0) {
assert.strictEqual(actualWarnings, null);
continue;
}
assert.strictEqual(actualWarnings.length, warnings);
if (variant.startsWith('worker')) {
const workerIds = stderr.match(/\(node:\d+, thread:\d+\)/g);
assert.strictEqual(workerIds.length, warnings);
}
}
})().then(common.mustCall());