From 2fa49a39e60fd577c9e1513314c95600360495d5 Mon Sep 17 00:00:00 2001 From: Masashi Hirano Date: Thu, 14 Jun 2018 01:56:42 +0900 Subject: [PATCH] test: add tests for end event of stream.Duplex Added tests to check the stream will automatically end the writable side when readable side ends when allowHalfOpen option is false. PR-URL: https://github.com/nodejs/node/pull/21325 Reviewed-By: Anna Henningsen Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Trivikram Kamat Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Ujjwal Sharma --- test/parallel/test-stream-duplex-end.js | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 test/parallel/test-stream-duplex-end.js diff --git a/test/parallel/test-stream-duplex-end.js b/test/parallel/test-stream-duplex-end.js new file mode 100644 index 00000000000000..8ee19346d3abe5 --- /dev/null +++ b/test/parallel/test-stream-duplex-end.js @@ -0,0 +1,41 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const Duplex = require('stream').Duplex; + +{ + const stream = new Duplex({ + read() {} + }); + assert.strictEqual(stream.allowHalfOpen, true); + stream.on('finish', common.mustNotCall()); + assert.strictEqual(stream.listenerCount('end'), 0); + stream.resume(); + stream.push(null); +} + +{ + const stream = new Duplex({ + read() {}, + allowHalfOpen: false + }); + assert.strictEqual(stream.allowHalfOpen, false); + stream.on('finish', common.mustCall()); + assert.strictEqual(stream.listenerCount('end'), 1); + stream.resume(); + stream.push(null); +} + +{ + const stream = new Duplex({ + read() {}, + allowHalfOpen: false + }); + assert.strictEqual(stream.allowHalfOpen, false); + stream._writableState.ended = true; + stream.on('finish', common.mustNotCall()); + assert.strictEqual(stream.listenerCount('end'), 1); + stream.resume(); + stream.push(null); +}