1'use strict'; 2const common = require('../common'); 3const ArrayStream = require('../common/arraystream'); 4const assert = require('assert'); 5const repl = require('repl'); 6const input = ['const foo = {', '};', 'foo']; 7 8function run({ useColors }) { 9 const inputStream = new ArrayStream(); 10 const outputStream = new ArrayStream(); 11 let output = ''; 12 13 outputStream.write = (data) => { output += data.replace('\r', ''); }; 14 15 const r = repl.start({ 16 prompt: '', 17 input: inputStream, 18 output: outputStream, 19 terminal: true, 20 useColors 21 }); 22 23 r.on('exit', common.mustCall(() => { 24 const actual = output.split('\n'); 25 26 // Validate the output, which contains terminal escape codes. 27 assert.strictEqual(actual.length, 6); 28 assert.ok(actual[0].endsWith(input[0])); 29 assert.ok(actual[1].includes('... ')); 30 assert.ok(actual[1].endsWith(input[1])); 31 assert.ok(actual[2].includes('undefined')); 32 assert.ok(actual[3].endsWith(input[2])); 33 assert.strictEqual(actual[4], '{}'); 34 })); 35 36 inputStream.run(input); 37 r.close(); 38} 39 40run({ useColors: true }); 41run({ useColors: false }); 42