2017-08-16 11:31:57 -04:00
|
|
|
'use strict';
|
2020-04-30 12:42:34 +02:00
|
|
|
const common = require('../common');
|
2018-08-21 14:47:47 -07:00
|
|
|
const ArrayStream = require('../common/arraystream');
|
2017-08-16 11:31:57 -04:00
|
|
|
const fixtures = require('../common/fixtures');
|
|
|
|
const assert = require('assert');
|
|
|
|
const repl = require('repl');
|
|
|
|
|
2025-01-22 14:19:38 -08:00
|
|
|
if (process.env.TERM === 'dumb') {
|
|
|
|
common.skip('skipping - dumb terminal');
|
|
|
|
}
|
2020-04-30 12:42:34 +02:00
|
|
|
|
2017-08-16 11:31:57 -04:00
|
|
|
const command = `.load ${fixtures.path('repl-load-multiline.js')}`;
|
|
|
|
const terminalCode = '\u001b[1G\u001b[0J \u001b[1G';
|
|
|
|
const terminalCodeRegex = new RegExp(terminalCode.replace(/\[/g, '\\['), 'g');
|
|
|
|
|
|
|
|
const expected = `${command}
|
|
|
|
const getLunch = () =>
|
|
|
|
placeOrder('tacos')
|
|
|
|
.then(eat);
|
2019-07-09 13:36:57 +02:00
|
|
|
|
2017-08-16 11:31:57 -04:00
|
|
|
const placeOrder = (order) => Promise.resolve(order);
|
|
|
|
const eat = (food) => '<nom nom nom>';
|
|
|
|
|
|
|
|
undefined
|
|
|
|
`;
|
|
|
|
|
|
|
|
let accum = '';
|
|
|
|
|
2018-08-21 14:47:47 -07:00
|
|
|
const inputStream = new ArrayStream();
|
|
|
|
const outputStream = new ArrayStream();
|
2017-08-16 11:31:57 -04:00
|
|
|
|
|
|
|
outputStream.write = (data) => accum += data.replace('\r', '');
|
|
|
|
|
|
|
|
const r = repl.start({
|
|
|
|
prompt: '',
|
|
|
|
input: inputStream,
|
|
|
|
output: outputStream,
|
|
|
|
terminal: true,
|
|
|
|
useColors: false
|
|
|
|
});
|
|
|
|
|
|
|
|
r.write(`${command}\n`);
|
2018-02-11 19:17:03 +01:00
|
|
|
assert.strictEqual(accum.replace(terminalCodeRegex, ''), expected);
|
2017-08-16 11:31:57 -04:00
|
|
|
r.close();
|