summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js')
-rw-r--r--devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js b/devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js
new file mode 100644
index 000000000..8479c797e
--- /dev/null
+++ b/devtools/server/tests/unit/test_setBreakpoint-on-line-in-gcd-script.js
@@ -0,0 +1,57 @@
+"use strict";
+
+var SOURCE_URL = getFileUrl("setBreakpoint-on-line-in-gcd-script.js");
+
+function run_test() {
+ return Task.spawn(function* () {
+ do_test_pending();
+
+ let global = createTestGlobal("test");
+ loadSubScript(SOURCE_URL, global);
+ Cu.forceGC(); Cu.forceGC(); Cu.forceGC();
+
+ DebuggerServer.registerModule("xpcshell-test/testactors");
+ DebuggerServer.init(() => true);
+ DebuggerServer.addTestGlobal(global);
+ let client = new DebuggerClient(DebuggerServer.connectPipe());
+ yield connect(client);
+
+ let { tabs } = yield listTabs(client);
+ let tab = findTab(tabs, "test");
+ let [, tabClient] = yield attachTab(client, tab);
+ let [, threadClient] = yield attachThread(tabClient);
+ yield resume(threadClient);
+
+ let { sources } = yield getSources(threadClient);
+ let source = findSource(sources, SOURCE_URL);
+ let sourceClient = threadClient.source(source);
+
+ let location = { line: 7 };
+ let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
+ do_check_true(packet.isPending);
+ do_check_false("actualLocation" in packet);
+
+ packet = yield executeOnNextTickAndWaitForPause(function () {
+ reload(tabClient).then(function () {
+ loadSubScript(SOURCE_URL, global);
+ });
+ }, client);
+ do_check_eq(packet.type, "paused");
+ let why = packet.why;
+ do_check_eq(why.type, "breakpoint");
+ do_check_eq(why.actors.length, 1);
+ do_check_eq(why.actors[0], breakpointClient.actor);
+ let frame = packet.frame;
+ let where = frame.where;
+ do_check_eq(where.source.actor, source.actor);
+ do_check_eq(where.line, location.line);
+ let variables = frame.environment.bindings.variables;
+ do_check_eq(variables.a.value, 1);
+ do_check_eq(variables.b.value.type, "undefined");
+ do_check_eq(variables.c.value.type, "undefined");
+ yield resume(threadClient);
+
+ yield close(client);
+ do_test_finished();
+ });
+}