summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/xpcshell/test_breakpoint-22.js
blob: 067dfa3fa249968fe162bb2f7a12d05f971e995f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

/**
 * Bug 1333219 - make that setBreakpoint fails when script is not found
 * at the specified line.
 */

add_task(
  threadFrontTest(async ({ threadFront, debuggee }) => {
    // Populate the `ScriptStore` so that we only test that the script
    // is added through `onNewScript`
    await getSources(threadFront);

    const packet = await executeOnNextTickAndWaitForPause(() => {
      evalCode(debuggee);
    }, threadFront);
    const source = await getSourceById(threadFront, packet.frame.where.actor);

    const location = {
      line: debuggee.line0 + 2,
    };

    const [res] = await setBreakpoint(source, location);
    ok(!res.error);

    const location2 = {
      line: debuggee.line0 + 7,
    };

    await source.setBreakpoint(location2).then(
      () => {
        do_throw("no code shall not be found the specified line or below it");
      },
      reason => {
        Assert.equal(reason.error, "noCodeAtLineColumn");
        ok(reason.message);
      }
    );

    await resume(threadFront);
  })
);

function evalCode(debuggee) {
  // Start a new script
  Cu.evalInSandbox(
    `
var line0 = Error().lineNumber;
function some_function() {
  // breakpoint is valid here -- it slides one line below (line0 + 2)
}
debugger;
// no breakpoint is allowed after the EOF (line0 + 6)
`,
    debuggee
  );
}