repl: use object writer for thrown errors
This makes us use the defaults that were set for the REPL, i.e. aligns with the printing of expression completion values, and in particular enables color support. PR-URL: https://github.com/nodejs/node/pull/26361 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
6c38fcff1d
commit
a0778a97e1
@ -422,7 +422,7 @@ function REPLServer(prompt,
|
||||
(_, pre, line) => pre + (line - 1));
|
||||
}
|
||||
}
|
||||
errStack = util.inspect(e);
|
||||
errStack = self.writer(e);
|
||||
|
||||
// Remove one line error braces to keep the old style in place.
|
||||
if (errStack[errStack.length - 1] === ']') {
|
||||
@ -432,7 +432,7 @@ function REPLServer(prompt,
|
||||
}
|
||||
|
||||
if (errStack === '') {
|
||||
errStack = `Thrown: ${util.inspect(e)}\n`;
|
||||
errStack = `Thrown: ${self.writer(e)}\n`;
|
||||
} else {
|
||||
const ln = errStack.endsWith('\n') ? '' : '\n';
|
||||
errStack = `Thrown:\n${errStack}${ln}`;
|
||||
|
@ -6,7 +6,7 @@ const assert = require('assert');
|
||||
const repl = require('repl');
|
||||
|
||||
|
||||
function run({ command, expected }) {
|
||||
function run({ command, expected, ...extraREPLOptions }) {
|
||||
let accum = '';
|
||||
|
||||
const inputStream = new ArrayStream();
|
||||
@ -19,7 +19,8 @@ function run({ command, expected }) {
|
||||
input: inputStream,
|
||||
output: outputStream,
|
||||
terminal: false,
|
||||
useColors: false
|
||||
useColors: false,
|
||||
...extraREPLOptions
|
||||
});
|
||||
|
||||
r.write(`${command}\n`);
|
||||
@ -44,6 +45,18 @@ const tests = [
|
||||
command: 'throw new Error(\'Whoops!\')',
|
||||
expected: 'Thrown:\nError: Whoops!\n'
|
||||
},
|
||||
{
|
||||
command: '(() => { const err = Error(\'Whoops!\'); ' +
|
||||
'err.foo = \'bar\'; throw err; })()',
|
||||
expected: 'Thrown:\n{ Error: Whoops!\n at repl:1:22 foo: \'bar\' }\n',
|
||||
},
|
||||
{
|
||||
command: '(() => { const err = Error(\'Whoops!\'); ' +
|
||||
'err.foo = \'bar\'; throw err; })()',
|
||||
expected: 'Thrown:\n{ Error: Whoops!\n at repl:1:22 foo: ' +
|
||||
"\u001b[32m'bar'\u001b[39m }\n",
|
||||
useColors: true
|
||||
},
|
||||
{
|
||||
command: 'foo = bar;',
|
||||
expected: 'Thrown:\nReferenceError: bar is not defined\n'
|
||||
|
Loading…
x
Reference in New Issue
Block a user