blob: ea3df1968d08d896726c5a1cad9b672af37985ac [file] [log] [blame] [edit]
'use strict';
const common = require('../common');
const ArrayStream = require('../common/arraystream');
const assert = require('assert');
if (process.env.TERM === 'dumb') {
common.skip('skipping - dumb terminal');
}
const readline = require('readline');
const rli = new readline.Interface({
terminal: true,
input: new ArrayStream(),
});
let recursionDepth = 0;
// Minimal reproduction for #46731
const testInput = ' \n}\n';
const numberOfExpectedLines = testInput.match(/\n/g).length;
rli.on('line', () => {
// Abort in case of infinite loop
if (recursionDepth > numberOfExpectedLines) {
return;
}
recursionDepth++;
// Write something recursively to readline
rli.write('foo');
});
rli.write(testInput);
assert.strictEqual(recursionDepth, numberOfExpectedLines);