From 1994ac09122967b5fbd3a9ec8bd4908a4cb9f074 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 29 Mar 2016 23:02:47 +0200 Subject: [PATCH] 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 Reviewed-By: Colin Ihrig Reviewed-By: Matteo Collina --- test/parallel/test-stdin-pipe-large.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/parallel/test-stdin-pipe-large.js diff --git a/test/parallel/test-stdin-pipe-large.js b/test/parallel/test-stdin-pipe-large.js new file mode 100644 index 00000000000000..428bbb0430283c --- /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(expectedBytes)); + +child.stdout.on('data', (chunk) => readBytes += chunk.length); +child.stdout.on('end', common.mustCall(() => { + assert.strictEqual(readBytes, expectedBytes); +}));