nodejs/test/parallel/test-readline-interface-recursive-writes.js

36 lines
793 B
JavaScript
Raw Permalink Normal View History

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