diff options
author | Lance Ball <lball@redhat.com> | 2017-09-11 18:24:21 -0400 |
---|---|---|
committer | Lance Ball <lball@redhat.com> | 2017-10-11 14:51:41 -0400 |
commit | c5f54b1fad19a35dc00322181650545d2961ccc4 (patch) | |
tree | 95fa0b5657b1aed4a77003ccfea0d61b98d973c7 /test/parallel/test-repl-pretty-stack.js | |
parent | 07f1efc2aeb68d993c8e132e3c3c52881c7f6670 (diff) | |
download | android-node-v8-c5f54b1fad19a35dc00322181650545d2961ccc4.tar.gz android-node-v8-c5f54b1fad19a35dc00322181650545d2961ccc4.tar.bz2 android-node-v8-c5f54b1fad19a35dc00322181650545d2961ccc4.zip |
repl: remove internal frames from runtime errors
When a user executes code in the REPLServer which generates an
exception, there is no need to display the REPLServer internal
stack frames.
PR-URL: https://github.com/nodejs/node/pull/15351
Reviewed-By: Prince John Wesley <princejohnwesley@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Refs: https://github.com/nodejs/node/pull/9601
Diffstat (limited to 'test/parallel/test-repl-pretty-stack.js')
-rw-r--r-- | test/parallel/test-repl-pretty-stack.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/parallel/test-repl-pretty-stack.js b/test/parallel/test-repl-pretty-stack.js new file mode 100644 index 0000000000..0fc6b3ada0 --- /dev/null +++ b/test/parallel/test-repl-pretty-stack.js @@ -0,0 +1,55 @@ +'use strict'; +const common = require('../common'); +const fixtures = require('../common/fixtures'); +const assert = require('assert'); +const repl = require('repl'); + + +function run({ command, expected }) { + 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: false, + useColors: false + }); + + r.write(`${command}\n`); + assert.strictEqual(accum, expected); + r.close(); +} + +const tests = [ + { + // test .load for a file that throws + command: `.load ${fixtures.path('repl-pretty-stack.js')}`, + expected: 'Error: Whoops!\n at repl:9:24\n at d (repl:12:3)\n ' + + 'at c (repl:9:3)\n at b (repl:6:3)\n at a (repl:3:3)\n' + }, + { + command: 'let x y;', + expected: 'let x y;\n ^\n\nSyntaxError: Unexpected identifier\n\n' + }, + { + command: 'throw new Error(\'Whoops!\')', + expected: 'Error: Whoops!\n' + }, + { + command: 'foo = bar;', + expected: 'ReferenceError: bar is not defined\n' + }, + // test anonymous IIFE + { + command: '(function() { throw new Error(\'Whoops!\'); })()', + expected: 'Error: Whoops!\n at repl:1:21\n' + } +]; + +tests.forEach(run); |