diff options
author | Anna Henningsen <anna@addaleax.net> | 2017-06-08 23:12:54 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-06-10 17:42:56 +0200 |
commit | 871e4d0280178ce1ec2955f9b3f71b528077f6fd (patch) | |
tree | 4f0f9f0e03fbb3ce7a1105aefb91d83ed4034473 /test/parallel/test-readline-reopen.js | |
parent | c6f074f737e3d63001c09724397598733177dc5e (diff) | |
download | android-node-v8-871e4d0280178ce1ec2955f9b3f71b528077f6fd.tar.gz android-node-v8-871e4d0280178ce1ec2955f9b3f71b528077f6fd.tar.bz2 android-node-v8-871e4d0280178ce1ec2955f9b3f71b528077f6fd.zip |
test: add regression test for 13557
Fixes: https://github.com/nodejs/node/issues/13557
PR-URL: https://github.com/nodejs/node/pull/13560
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'test/parallel/test-readline-reopen.js')
-rw-r--r-- | test/parallel/test-readline-reopen.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/parallel/test-readline-reopen.js b/test/parallel/test-readline-reopen.js new file mode 100644 index 0000000000..dead22d81a --- /dev/null +++ b/test/parallel/test-readline-reopen.js @@ -0,0 +1,44 @@ +'use strict'; + +// Regression test for https://github.com/nodejs/node/issues/13557 +// Tests that multiple subsequent readline instances can re-use an input stream. + +const common = require('../common'); +const assert = require('assert'); +const readline = require('readline'); +const { PassThrough } = require('stream'); + +const input = new PassThrough(); +const output = new PassThrough(); + +const rl1 = readline.createInterface({ + input, + output, + terminal: true +}); + +rl1.on('line', common.mustCall(rl1OnLine)); + +// Write a line plus the first byte of a UTF-8 multibyte character to make sure +// that it doesn’t get lost when closing the readline instance. +input.write(Buffer.concat([ + Buffer.from('foo\n'), + Buffer.from([ 0xe2 ]) // Exactly one third of a ☃ snowman. +])); + +function rl1OnLine(line) { + assert.strictEqual(line, 'foo'); + rl1.close(); + const rl2 = readline.createInterface({ + input, + output, + terminal: true + }); + + rl2.on('line', common.mustCall((line) => { + assert.strictEqual(line, '☃bar'); + rl2.close(); + })); + input.write(Buffer.from([0x98, 0x83])); // The rest of the ☃ snowman. + input.write('bar\n'); +} |