test_setBreakpoint-on-line-with-multiple-offsets.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. "use strict";
  2. var SOURCE_URL = getFileUrl("setBreakpoint-on-line-with-multiple-offsets.js");
  3. function run_test() {
  4. return Task.spawn(function* () {
  5. do_test_pending();
  6. DebuggerServer.registerModule("xpcshell-test/testactors");
  7. DebuggerServer.init(() => true);
  8. let global = createTestGlobal("test");
  9. DebuggerServer.addTestGlobal(global);
  10. let client = new DebuggerClient(DebuggerServer.connectPipe());
  11. yield connect(client);
  12. let { tabs } = yield listTabs(client);
  13. let tab = findTab(tabs, "test");
  14. let [, tabClient] = yield attachTab(client, tab);
  15. let [, threadClient] = yield attachThread(tabClient);
  16. yield resume(threadClient);
  17. let promise = waitForNewSource(threadClient, SOURCE_URL);
  18. loadSubScript(SOURCE_URL, global);
  19. let { source } = yield promise;
  20. let sourceClient = threadClient.source(source);
  21. let location = { line: 4 };
  22. let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location);
  23. do_check_false(packet.isPending);
  24. do_check_false("actualLocation" in packet);
  25. packet = yield executeOnNextTickAndWaitForPause(function () {
  26. Cu.evalInSandbox("f()", global);
  27. }, client);
  28. do_check_eq(packet.type, "paused");
  29. let why = packet.why;
  30. do_check_eq(why.type, "breakpoint");
  31. do_check_eq(why.actors.length, 1);
  32. do_check_eq(why.actors[0], breakpointClient.actor);
  33. let frame = packet.frame;
  34. let where = frame.where;
  35. do_check_eq(where.source.actor, source.actor);
  36. do_check_eq(where.line, location.line);
  37. let variables = frame.environment.bindings.variables;
  38. do_check_eq(variables.i.value.type, "undefined");
  39. packet = yield executeOnNextTickAndWaitForPause(function () {
  40. resume(threadClient);
  41. }, client);
  42. do_check_eq(packet.type, "paused");
  43. why = packet.why;
  44. do_check_eq(why.type, "breakpoint");
  45. do_check_eq(why.actors.length, 1);
  46. do_check_eq(why.actors[0], breakpointClient.actor);
  47. frame = packet.frame;
  48. where = frame.where;
  49. do_check_eq(where.source.actor, source.actor);
  50. do_check_eq(where.line, location.line);
  51. variables = frame.environment.bindings.variables;
  52. do_check_eq(variables.i.value, 0);
  53. yield resume(threadClient);
  54. yield close(client);
  55. do_test_finished();
  56. });
  57. }