summaryrefslogtreecommitdiff
path: root/test/parallel/test-stdin-pipe-large.js
diff options
context:
space:
mode:
authorAnna Henningsen <sqrt@entless.org>2016-03-29 23:02:47 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2016-03-30 11:09:42 +0200
commit761787be9156758a3300f2aac50f92345055281c (patch)
tree822b846d220da1b110a8276f6a893ef952fa38d9 /test/parallel/test-stdin-pipe-large.js
parenta4c4a852a9a0ead7db424d72da056a5164da1179 (diff)
downloadandroid-node-v8-761787be9156758a3300f2aac50f92345055281c.tar.gz
android-node-v8-761787be9156758a3300f2aac50f92345055281c.tar.bz2
android-node-v8-761787be9156758a3300f2aac50f92345055281c.zip
test: add test for piping large input from stdin
Check that piping a large chunk of data from `process.stdin` into `process.stdout` does not lose any data by verifying that the output has the same size as the input. This is a regression test for #5927 and fails for the commits in the range [ace100945..89abe8680). PR-URL: https://github.com/nodejs/node/pull/5949 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test/parallel/test-stdin-pipe-large.js')
-rw-r--r--test/parallel/test-stdin-pipe-large.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/parallel/test-stdin-pipe-large.js b/test/parallel/test-stdin-pipe-large.js
new file mode 100644
index 0000000000..5f4a2f10c8
--- /dev/null
+++ b/test/parallel/test-stdin-pipe-large.js
@@ -0,0 +1,23 @@
+'use strict';
+// See https://github.com/nodejs/node/issues/5927
+
+const common = require('../common');
+const assert = require('assert');
+const spawn = require('child_process').spawn;
+
+if (process.argv[2] === 'child') {
+ process.stdin.pipe(process.stdout);
+ return;
+}
+
+const child = spawn(process.execPath, [__filename, 'child'], { stdio: 'pipe' });
+
+const expectedBytes = 1024 * 1024;
+let readBytes = 0;
+
+child.stdin.end(Buffer.alloc(expectedBytes));
+
+child.stdout.on('data', (chunk) => readBytes += chunk.length);
+child.stdout.on('end', common.mustCall(() => {
+ assert.strictEqual(readBytes, expectedBytes);
+}));