diff --git a/bin/_mocha b/bin/_mocha index 61aac40d3a..d944cfa4db 100755 --- a/bin/_mocha +++ b/bin/_mocha @@ -466,12 +466,19 @@ function exitLater (code) { } function exit (code) { + var clampedCode = Math.min(code, 255); + + // Eagerly set the process's exit code in case stream.write doesn't + // execute its callback before the process terminates. + process.exitCode = clampedCode; + // flush output for Node.js Windows pipe bug // https://github.com/joyent/node/issues/6247 is just one bug example // https://github.com/visionmedia/mocha/issues/333 has a good discussion function done () { - if (!(draining--)) { - process.exit(Math.min(code, 255)); + draining--; + if (draining <= 0) { + process.exit(clampedCode); } } @@ -483,8 +490,6 @@ function exit (code) { draining += 1; stream.write('', done); }); - - done(); } process.on('SIGINT', function () {