summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-07-05 11:45:45 -0400
committerMichaƫl Zasso <targos@protonmail.com>2019-07-20 11:05:21 +0200
commita24ab56dc5119d456f7fe354a6ad558f304b64e2 (patch)
tree047e53620f2725885580de198e12e4661bed269f /test
parent4cb0fc3ab150f3f60e6d100ee7dd83b60c1885db (diff)
downloadandroid-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.js28
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));
+}