summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/xpcshell/test_pause_exceptions-02.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/xpcshell/test_pause_exceptions-02.js')
-rw-r--r--devtools/server/tests/xpcshell/test_pause_exceptions-02.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/devtools/server/tests/xpcshell/test_pause_exceptions-02.js b/devtools/server/tests/xpcshell/test_pause_exceptions-02.js
new file mode 100644
index 0000000000..00631b071f
--- /dev/null
+++ b/devtools/server/tests/xpcshell/test_pause_exceptions-02.js
@@ -0,0 +1,40 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Test that setting pauseOnExceptions to true when the debugger isn't in a
+ * paused state will not cause the debuggee to pause when an exception is thrown.
+ */
+
+add_task(
+ threadFrontTest(async ({ threadFront, debuggee, commands }) => {
+ await commands.threadConfigurationCommand.updateConfiguration({
+ pauseOnExceptions: true,
+ ignoreCaughtExceptions: false,
+ });
+
+ const packet = await executeOnNextTickAndWaitForPause(
+ () => evaluateTestCode(debuggee),
+ threadFront
+ );
+
+ Assert.equal(packet.why.type, "exception");
+ Assert.equal(packet.why.exception, 42);
+ await threadFront.resume();
+ })
+);
+
+function evaluateTestCode(debuggee) {
+ /* eslint-disable no-throw-literal */
+ // prettier-ignore
+ debuggee.eval("(" + function () { // 1
+ function stopMe() { // 2
+ throw 42; // 3
+ } // 4
+ try { // 5
+ stopMe(); // 6
+ } catch (e) {} // 7
+ } + ")()");
+}