diff options
author | cjihrig <cjihrig@gmail.com> | 2019-07-05 11:45:45 -0400 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2019-07-20 11:05:21 +0200 |
commit | a24ab56dc5119d456f7fe354a6ad558f304b64e2 (patch) | |
tree | 047e53620f2725885580de198e12e4661bed269f /test | |
parent | 4cb0fc3ab150f3f60e6d100ee7dd83b60c1885db (diff) | |
download | android-node-v8-a24ab56dc5119d456f7fe354a6ad558f304b64e2.tar.gz android-node-v8-a24ab56dc5119d456f7fe354a6ad558f304b64e2.tar.bz2 android-node-v8-a24ab56dc5119d456f7fe354a6ad558f304b64e2.zip |
src: allow fatal exceptions to be enhanced
This commit allows fatal exceptions to be enhanced so that
exceptions thrown from an unhandledException handler have
the stack attached properly.
PR-URL: https://github.com/nodejs/node/pull/28562
Fixes: https://github.com/nodejs/node/issues/28550
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-unhandled-exception-rethrow-error.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/parallel/test-unhandled-exception-rethrow-error.js b/test/parallel/test-unhandled-exception-rethrow-error.js new file mode 100644 index 0000000000..a4d326d983 --- /dev/null +++ b/test/parallel/test-unhandled-exception-rethrow-error.js @@ -0,0 +1,28 @@ +'use strict'; +require('../common'); + +if (process.argv[2] === 'child') { + process.on('uncaughtException', (err) => { + err.rethrow = true; + throw err; + }); + + function throwException() { + throw new Error('boom'); + } + + throwException(); +} else { + const assert = require('assert'); + const { spawnSync } = require('child_process'); + const result = spawnSync(process.execPath, [__filename, 'child']); + + assert.strictEqual(result.status, 7); + assert.strictEqual(result.signal, null); + assert.strictEqual(result.stdout.toString().trim(), ''); + // Verify that the error was thrown and that the stack was preserved. + const stderr = result.stderr.toString(); + assert(/Error: boom/.test(stderr)); + assert(/at throwException/.test(stderr)); + assert(/rethrow: true/.test(stderr)); +} |