summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-02-28 11:03:37 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2019-03-04 00:12:07 +0100
commita0778a97e19fb6e661a4277f18f758443d20470c (patch)
treef62d9ba1ec609b10aef2061e0ce1cc88536da2cb
parent6c38fcff1d074e058d427e817a0a61c0f03e0aba (diff)
downloadandroid-node-v8-a0778a97e19fb6e661a4277f18f758443d20470c.tar.gz
android-node-v8-a0778a97e19fb6e661a4277f18f758443d20470c.tar.bz2
android-node-v8-a0778a97e19fb6e661a4277f18f758443d20470c.zip
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>
-rw-r--r--lib/repl.js4
-rw-r--r--test/parallel/test-repl-pretty-stack.js17
2 files changed, 17 insertions, 4 deletions
diff --git a/lib/repl.js b/lib/repl.js
index 76f2aca665..d3363d4bbc 100644
--- a/lib/repl.js
+++ b/lib/repl.js
@@ -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}`;
diff --git a/test/parallel/test-repl-pretty-stack.js b/test/parallel/test-repl-pretty-stack.js
index e4137b84a4..4bf18fa1c2 100644
--- a/test/parallel/test-repl-pretty-stack.js
+++ b/test/parallel/test-repl-pretty-stack.js
@@ -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`);
@@ -45,6 +46,18 @@ const tests = [
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'
},