try {
if (!process._exiting) {
process._exiting = true;
- process.emit('exit', 1);
+ process.emit('exit', 8);
}
} catch (er) {
// nothing to be done about it at this point.
return child2();
case 'child3':
return child3();
+ case 'child4':
+ return child4();
case undefined:
return parent();
default:
process.exit(0);
}
+function child4() {
+ process.exitCode = 99;
+ process.on('exit', function(code) {
+ if (code !== 8) {
+ console.log('wrong code! expected 8 for uncaughtException');
+ process.exit(99);
+ }
+ });
+ throw new Error('ok');
+}
+
function parent() {
test('child1', 42);
test('child2', 42);
test('child3', 0);
+ test('child4', 8);
}
function test(arg, exit) {
var spawn = require('child_process').spawn;
var node = process.execPath;
var f = __filename;
- spawn(node, [f, arg], {stdio: 'inherit'}).on('exit', function(code) {
+ var option = { stdio: [ 0, 1, 'ignore' ] };
+ spawn(node, [f, arg], option).on('exit', function(code) {
assert.equal(code, exit, 'wrong exit for ' +
arg + '\nexpected:' + exit +
' but got:' + code);