summaryrefslogtreecommitdiff
path: root/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js')
-rw-r--r--tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js b/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js
new file mode 100644
index 000000000..279ce10d5
--- /dev/null
+++ b/tests/node_compat/test/parallel/test-stream-pipe-cleanup-pause.js
@@ -0,0 +1,44 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 18.12.1
+// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually.
+
+'use strict';
+const common = require('../common');
+const stream = require('stream');
+
+const reader = new stream.Readable();
+const writer1 = new stream.Writable();
+const writer2 = new stream.Writable();
+
+// 560000 is chosen here because it is larger than the (default) highWaterMark
+// and will cause `.write()` to return false
+// See: https://github.com/nodejs/node/issues/2323
+const buffer = Buffer.allocUnsafe(560000);
+
+reader._read = () => {};
+
+writer1._write = common.mustCall(function(chunk, encoding, cb) {
+ this.emit('chunk-received');
+ cb();
+}, 1);
+writer1.once('chunk-received', function() {
+ reader.unpipe(writer1);
+ reader.pipe(writer2);
+ reader.push(buffer);
+ setImmediate(function() {
+ reader.push(buffer);
+ setImmediate(function() {
+ reader.push(buffer);
+ });
+ });
+});
+
+writer2._write = common.mustCall(function(chunk, encoding, cb) {
+ cb();
+}, 3);
+
+reader.pipe(writer1);
+reader.push(buffer);