1'use strict'; 2const common = require('../common'); 3const ArrayStream = require('../common/arraystream'); 4const assert = require('assert'); 5 6common.skipIfDumbTerminal(); 7 8const readline = require('readline'); 9const rli = new readline.Interface({ 10 terminal: true, 11 input: new ArrayStream(), 12}); 13 14let recursionDepth = 0; 15 16// Minimal reproduction for #46731 17const testInput = ' \n}\n'; 18const numberOfExpectedLines = testInput.match(/\n/g).length; 19 20rli.on('line', () => { 21 // Abort in case of infinite loop 22 if (recursionDepth > numberOfExpectedLines) { 23 return; 24 } 25 recursionDepth++; 26 // Write something recursively to readline 27 rli.write('foo'); 28}); 29 30 31rli.write(testInput); 32 33assert.strictEqual(recursionDepth, numberOfExpectedLines); 34