node/test/parallel/test-readline-reopen.js
Anna Henningsen 871e4d0280
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>
2017-06-10 17:42:56 +02:00

45 lines
1.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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 doesnt 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');
}