Skip to content

Commit

Permalink
test: add test for stream unpipe with 'data' listeners
Browse files Browse the repository at this point in the history
PR-URL: #18516
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
  • Loading branch information
addaleax committed Feb 27, 2018
1 parent e33b9fa commit 7853a7f
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions test/parallel/test-stream-pipe-flow-after-unpipe.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use strict';
const common = require('../common');
const { Readable, Writable } = require('stream');

// Tests that calling .unpipe() un-blocks a stream that is paused because
// it is waiting on the writable side to finish a write().

const rs = new Readable({
highWaterMark: 1,
// That this gets called at least 20 times is the real test here.
read: common.mustCallAtLeast(() => rs.push('foo'), 20)
});

const ws = new Writable({
highWaterMark: 1,
write: common.mustCall(() => {
// Ignore the callback, this write() simply never finishes.
setImmediate(() => rs.unpipe(ws));
})
});

let chunks = 0;
rs.on('data', common.mustCallAtLeast(() => {
chunks++;
if (chunks >= 20)
rs.pause(); // Finish this test.
}));

rs.pipe(ws);

0 comments on commit 7853a7f

Please sign in to comment.