%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const assert = require('assert'); function getTestCases(isWorker = false) { const cases = []; function exitsOnExitCodeSet() { process.exitCode = 42; process.on('exit', (code) => { assert.strictEqual(process.exitCode, 42); assert.strictEqual(code, 42); }); } cases.push({ func: exitsOnExitCodeSet, result: 42 }); function changesCodeViaExit() { process.exitCode = 99; process.on('exit', (code) => { assert.strictEqual(process.exitCode, 42); assert.strictEqual(code, 42); }); process.exit(42); } cases.push({ func: changesCodeViaExit, result: 42 }); function changesCodeZeroExit() { process.exitCode = 99; process.on('exit', (code) => { assert.strictEqual(process.exitCode, 0); assert.strictEqual(code, 0); }); process.exit(0); } cases.push({ func: changesCodeZeroExit, result: 0 }); function exitWithOneOnUncaught() { process.exitCode = 99; process.on('exit', (code) => { // cannot use assert because it will be uncaughtException -> 1 exit code // that will render this test useless if (code !== 1 || process.exitCode !== 1) { console.log('wrong code! expected 1 for uncaughtException'); process.exit(99); } }); throw new Error('ok'); } cases.push({ func: exitWithOneOnUncaught, result: 1, error: /^Error: ok$/, }); function changeCodeInsideExit() { process.exitCode = 95; process.on('exit', (code) => { assert.strictEqual(process.exitCode, 95); assert.strictEqual(code, 95); process.exitCode = 99; }); } cases.push({ func: changeCodeInsideExit, result: 99 }); function zeroExitWithUncaughtHandler() { process.on('exit', (code) => { assert.strictEqual(process.exitCode, 0); assert.strictEqual(code, 0); }); process.on('uncaughtException', () => { }); throw new Error('ok'); } cases.push({ func: zeroExitWithUncaughtHandler, result: 0 }); function changeCodeInUncaughtHandler() { process.on('exit', (code) => { assert.strictEqual(process.exitCode, 97); assert.strictEqual(code, 97); }); process.on('uncaughtException', () => { process.exitCode = 97; }); throw new Error('ok'); } cases.push({ func: changeCodeInUncaughtHandler, result: 97 }); function changeCodeInExitWithUncaught() { process.on('exit', (code) => { assert.strictEqual(process.exitCode, 1); assert.strictEqual(code, 1); process.exitCode = 98; }); throw new Error('ok'); } cases.push({ func: changeCodeInExitWithUncaught, result: 98, error: /^Error: ok$/, }); function exitWithZeroInExitWithUncaught() { process.on('exit', (code) => { assert.strictEqual(process.exitCode, 1); assert.strictEqual(code, 1); process.exitCode = 0; }); throw new Error('ok'); } cases.push({ func: exitWithZeroInExitWithUncaught, result: 0, error: /^Error: ok$/, }); function exitWithThrowInUncaughtHandler() { process.on('uncaughtException', () => { throw new Error('ok') }); throw new Error('bad'); } cases.push({ func: exitWithThrowInUncaughtHandler, result: isWorker ? 1 : 7, error: /^Error: ok$/, }); function exitWithUndefinedFatalException() { process._fatalException = undefined; throw new Error('ok'); } cases.push({ func: exitWithUndefinedFatalException, result: 6, }); return cases; } exports.getTestCases = getTestCases;