Skip to content

Commit

Permalink
Fix for issue #2713
Browse files Browse the repository at this point in the history
* Eagerly set the process exitcode in case the write callback isn't executed before the process terminates.
* Remove the extraneous call to `done()` at the bottom of the function.
* Cleanup the `draining` reduction and value check in `done` into separate lines for easier reading.
  • Loading branch information
chris-codaio committed Feb 15, 2017
1 parent a2fc76c commit ef2b5e5
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions bin/_mocha
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

Expand All @@ -483,8 +490,6 @@ function exit (code) {
draining += 1;
stream.write('', done);
});

done();
}

process.on('SIGINT', function () {
Expand Down

0 comments on commit ef2b5e5

Please sign in to comment.