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