◐ Shell
clean mode source ↗

test: do not swallow uncaughtException errors in exit code tests · nodejs/node@bd996bf

Original file line numberDiff line numberDiff line change

@@ -62,23 +62,25 @@ function getTestCases(isWorker = false) {

6262

cases.push({ func: changeCodeInsideExit, result: 99 });

6363
6464

function zeroExitWithUncaughtHandler() {

65+

const noop = () => { };

6566

process.on('exit', (code) => {

66-

assert.strictEqual(process.exitCode, 0);

67+

process.off('uncaughtException', noop);

68+

assert.strictEqual(process.exitCode, undefined);

6769

assert.strictEqual(code, 0);

6870

});

69-

process.on('uncaughtException', () => { });

71+

process.on('uncaughtException', noop);

7072

throw new Error('ok');

7173

}

7274

cases.push({ func: zeroExitWithUncaughtHandler, result: 0 });

7375
7476

function changeCodeInUncaughtHandler() {

77+

const modifyExitCode = () => { process.exitCode = 97; };

7578

process.on('exit', (code) => {

79+

process.off('uncaughtException', modifyExitCode);

7680

assert.strictEqual(process.exitCode, 97);

7781

assert.strictEqual(code, 97);

7882

});

79-

process.on('uncaughtException', () => {

80-

process.exitCode = 97;

81-

});

83+

process.on('uncaughtException', modifyExitCode);

8284

throw new Error('ok');

8385

}

8486

cases.push({ func: changeCodeInUncaughtHandler, result: 97 });