stream: Emit readable on ended streams via read(0)

cc: @mjijackson
This commit is contained in:
isaacs 2013-03-26 22:43:53 -07:00
Родитель eafa902632
Коммит 929e4d9c9a
2 изменённых файлов: 25 добавлений и 1 удалений

Просмотреть файл

@ -236,7 +236,7 @@ Readable.prototype.read = function(n) {
// the 'readable' event and move on.
if (n === 0 &&
state.needReadable &&
state.length >= state.highWaterMark) {
(state.length >= state.highWaterMark || state.ended)) {
emitReadable(this);
return null;
}

Просмотреть файл

@ -80,3 +80,27 @@ var Readable = require('stream').Readable;
console.log('ok 2');
});
})();
(function third() {
// Third test, not reading when the stream has not passed
// the highWaterMark but *has* reached EOF.
var r = new Readable({
highWaterMark: 30
});
// This triggers a 'readable' event, which is lost.
r.push(new Buffer('blerg'));
r.push(null);
var caughtReadable = false;
setTimeout(function() {
r.on('readable', function() {
caughtReadable = true;
});
});
process.on('exit', function() {
assert(caughtReadable);
console.log('ok 3');
});
})();