From 6808706c3b8baf8d4b867806acebda949f6d8f38 Mon Sep 17 00:00:00 2001 From: isaacs Date: Fri, 6 Sep 2013 17:08:56 -0700 Subject: [PATCH] process: Use exit code 8 consistently This should always be used in the case of an uncaughtException --- src/node.js | 2 +- test/simple/test-process-exit-code.js | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/node.js b/src/node.js index 0c24f7a54a..75342e9bc0 100644 --- a/src/node.js +++ b/src/node.js @@ -233,7 +233,7 @@ 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. diff --git a/test/simple/test-process-exit-code.js b/test/simple/test-process-exit-code.js index c7fc78e20f..e5630f07fd 100644 --- a/test/simple/test-process-exit-code.js +++ b/test/simple/test-process-exit-code.js @@ -29,6 +29,8 @@ switch (process.argv[2]) { return child2(); case 'child3': return child3(); + case 'child4': + return child4(); case undefined: return parent(); default: @@ -58,17 +60,30 @@ function child3() { 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);