diff --git a/index.js b/index.js index b8f0b563..007733fc 100644 --- a/index.js +++ b/index.js @@ -43,7 +43,10 @@ function createExitHarness (conf) { }); var stream = harness.createStream(); - stream.pipe(createDefaultStream()); + var es = stream.pipe(createDefaultStream()); + if (canEmitExit) { + es.on('error', function (err) { harness._exitCode = 1 }); + } var ended = false; stream.on('end', function () { ended = true }); @@ -54,6 +57,9 @@ function createExitHarness (conf) { var _error; process.on('uncaughtException', function (err) { + if (err && err.code === 'EPIPE' && err.errno === 'EPIPE' + && err.syscall === 'write') return; + _error = err throw err @@ -73,6 +79,7 @@ function createExitHarness (conf) { harness.close(); process.exit(code || harness._exitCode); }); + return harness; } diff --git a/lib/default_stream.js b/lib/default_stream.js index be4fa4bd..6cf4bc82 100644 --- a/lib/default_stream.js +++ b/lib/default_stream.js @@ -3,9 +3,11 @@ var combine = require('stream-combiner'); var split = require('split'); module.exports = function () { - return combine(split(), through(write)); + var stream = combine(split(), through(write)); + return stream; function write (line) { - console.log(line); + try { console.log(line); } + catch (e) { stream.emit('error', e) } } };