mirror of https://github.com/lukechilds/node.git
Browse Source
The `.load` command would fail with any file that contains multiline `.` operator expressions. This was particularly noticeable when chaining promises or multi-line arrow expressions. This change Forces the REPL to be in `editorMode` while loading a file from disk using the `.load` command. Fixes: https://github.com/nodejs/node/issues/14022 PR-URL: https://github.com/nodejs/node/pull/14861 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Refael Ackermann <refack@gmail.com>canary-base
Lance Ball
7 years ago
3 changed files with 48 additions and 1 deletions
@ -0,0 +1,6 @@ |
|||
const getLunch = () => |
|||
placeOrder('tacos') |
|||
.then(eat); |
|||
|
|||
const placeOrder = (order) => Promise.resolve(order); |
|||
const eat = (food) => '<nom nom nom>'; |
@ -0,0 +1,38 @@ |
|||
'use strict'; |
|||
const common = require('../common'); |
|||
const fixtures = require('../common/fixtures'); |
|||
const assert = require('assert'); |
|||
const repl = require('repl'); |
|||
|
|||
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); |
|||
const placeOrder = (order) => Promise.resolve(order); |
|||
const eat = (food) => '<nom nom nom>'; |
|||
|
|||
undefined |
|||
`;
|
|||
|
|||
let accum = ''; |
|||
|
|||
const inputStream = new common.ArrayStream(); |
|||
const outputStream = new common.ArrayStream(); |
|||
|
|||
outputStream.write = (data) => accum += data.replace('\r', ''); |
|||
|
|||
const r = repl.start({ |
|||
prompt: '', |
|||
input: inputStream, |
|||
output: outputStream, |
|||
terminal: true, |
|||
useColors: false |
|||
}); |
|||
|
|||
r.write(`${command}\n`); |
|||
assert.strictEqual(accum.replace(terminalCodeRegex, ''), expected); |
|||
r.close(); |
Loading…
Reference in new issue