node/test/parallel/test-process-exit-code.js
sreepurnajasti 2004efded8
test: improve to use template string
PR-URL: https://github.com/nodejs/node/pull/18097
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
2018-02-27 00:43:25 -05:00

84 lines
1.7 KiB
JavaScript

'use strict';
require('../common');
const assert = require('assert');
switch (process.argv[2]) {
case 'child1':
return child1();
case 'child2':
return child2();
case 'child3':
return child3();
case 'child4':
return child4();
case 'child5':
return child5();
case undefined:
return parent();
default:
throw new Error('invalid');
}
function child1() {
process.exitCode = 42;
process.on('exit', function(code) {
assert.strictEqual(code, 42);
});
}
function child2() {
process.exitCode = 99;
process.on('exit', function(code) {
assert.strictEqual(code, 42);
});
process.exit(42);
}
function child3() {
process.exitCode = 99;
process.on('exit', function(code) {
assert.strictEqual(code, 0);
});
process.exit(0);
}
function child4() {
process.exitCode = 99;
process.on('exit', function(code) {
if (code !== 1) {
console.log('wrong code! expected 1 for uncaughtException');
process.exit(99);
}
});
throw new Error('ok');
}
function child5() {
process.exitCode = 95;
process.on('exit', function(code) {
assert.strictEqual(code, 95);
process.exitCode = 99;
});
}
function parent() {
const { spawn } = require('child_process');
const node = process.execPath;
const f = __filename;
const option = { stdio: [ 0, 1, 'ignore' ] };
const test = (arg, exit) => {
spawn(node, [f, arg], option).on('exit', (code) => {
assert.strictEqual(
code, exit,
`wrong exit for ${arg}\nexpected:${exit} but got:${code}`);
console.log(`ok - ${arg} exited with ${exit}`);
});
};
test('child1', 42);
test('child2', 42);
test('child3', 0);
test('child4', 1);
test('child5', 99);
}