Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

throw from stdout.end and stderr.end

  • Loading branch information...
commit 13324bf844d4527e91cf3777d3010aa4dca5f365 1 parent 09329e7
Igor Zinkovsky authored
Showing with 19 additions and 12 deletions.
  1. +1 −1  lib/stream.js
  2. +8 −2 src/node.js
  3. +10 −9 test/simple/test-tty-stdout-end.js
2  lib/stream.js
View
@@ -54,7 +54,7 @@ Stream.prototype.pipe = function(dest, options) {
// If the 'end' option is not supplied, dest.end() will be called when
// source gets the 'end' or 'close' events. Only dest.end() once, and
// only when all sources have ended.
- if (!options || options.end !== false) {
+ if (!dest._isStdio && (!options || options.end !== false)) {
dest._pipeCount = dest._pipeCount || 0;
dest._pipeCount++;
10 src/node.js
View
@@ -269,6 +269,8 @@
// For supporting legacy API we put the FD here.
stream.fd = fd;
+ stream._isStdio = true;
+
return stream;
}
@@ -278,14 +280,18 @@
process.__defineGetter__('stdout', function() {
if (stdout) return stdout;
stdout = createWritableStdioStream(1);
- stdout.end = stdout.destroy = stdout.destroySoon = function() { };
+ stdout.end = stdout.destroy = stdout.destroySoon = function() {
+ throw new Error('process.stdout cannot be closed');
+ };
return stdout;
});
process.__defineGetter__('stderr', function() {
if (stderr) return stderr;
stderr = createWritableStdioStream(2);
- stderr.end = stderr.destroy = stderr.destroySoon = function() { };
+ stderr.end = stderr.destroy = stderr.destroySoon = function() {
+ throw new Error('process.stderr cannot be closed');
+ };
return stderr;
});
19 test/simple/test-tty-stdout-end.js
View
@@ -22,14 +22,15 @@
// Can't test this when 'make test' doesn't assign a tty to the stdout.
var common = require('../common');
var assert = require('assert');
-var tty = require('tty');
-var closed = false;
-process.stdout.on('close', function() {
- closed = true;
-});
-process.on('exit', function() {
- assert.ok(closed);
-});
+var exceptionCaught = false;
-process.stdout.end();
+try {
+ process.stdout.end();
+} catch(e) {
+ exceptionCaught = true;
+ assert.ok(common.isError(e));
+ assert.equal('process.stdout cannot be closed', e.message);
+}
+
+assert.ok(exceptionCaught);

1 comment on commit 13324bf

Ben Noordhuis

@igorzi: This commit seems to have introduced a regression. #2507 is the bug report.

Please sign in to comment.
Something went wrong with that request. Please try again.