mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-26 10:10:31 +00:00
Bug 1333219
- Allow setBreakpoint on server fail when script is absent. r=jlast
MozReview-Commit-ID: 4CDeTToUPfi --HG-- extra : rebase_source : caba187788fd05566871827936fe6140d244946e
This commit is contained in:
parent
54a4bc08ea
commit
9a8debf6a5
@ -795,12 +795,15 @@ let SourceActor = ActorClassWithSpec(sourceSpec, {
|
||||
// because we found scripts on the line we started from,
|
||||
// which means there must be valid entry points somewhere
|
||||
// within those scripts.
|
||||
assert(
|
||||
actualLine <= maxLine,
|
||||
"Could not find any entry points to set a breakpoint on, " +
|
||||
"even though I was told a script existed on the line I started " +
|
||||
"the search with."
|
||||
);
|
||||
if (actualLine > maxLine) {
|
||||
return promise.reject({
|
||||
error: "noCodeAtLineColumn",
|
||||
message:
|
||||
"Could not find any entry points to set a breakpoint on, " +
|
||||
"even though I was told a script existed on the line I started " +
|
||||
"the search with."
|
||||
});
|
||||
}
|
||||
|
||||
// Update the actor to use the new location (reusing a
|
||||
// previous breakpoint if it already exists on that line).
|
||||
|
77
devtools/server/tests/unit/test_breakpoint-22.js
Normal file
77
devtools/server/tests/unit/test_breakpoint-22.js
Normal file
@ -0,0 +1,77 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
/**
|
||||
* Bug 1333219 - make that setBreakpoint fails when script is not found
|
||||
* at the specified line.
|
||||
*/
|
||||
|
||||
var gDebuggee;
|
||||
var gClient;
|
||||
var gThreadClient;
|
||||
var gCallback;
|
||||
|
||||
function run_test()
|
||||
{
|
||||
run_test_with_server(DebuggerServer, function () {
|
||||
run_test_with_server(WorkerDebuggerServer, do_test_finished);
|
||||
});
|
||||
do_test_pending();
|
||||
}
|
||||
|
||||
function run_test_with_server(aServer, aCallback)
|
||||
{
|
||||
gCallback = aCallback;
|
||||
initTestDebuggerServer(aServer);
|
||||
gDebuggee = addTestGlobal("test-breakpoints", aServer);
|
||||
gClient = new DebuggerClient(aServer.connectPipe());
|
||||
gClient.connect().then(function () {
|
||||
attachTestTabAndResume(gClient,
|
||||
"test-breakpoints",
|
||||
function (aResponse, aTabClient, aThreadClient) {
|
||||
gThreadClient = aThreadClient;
|
||||
test();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const test = Task.async(function* () {
|
||||
// Populate the `ScriptStore` so that we only test that the script
|
||||
// is added through `onNewScript`
|
||||
yield getSources(gThreadClient);
|
||||
|
||||
let packet = yield executeOnNextTickAndWaitForPause(evalCode, gClient);
|
||||
let source = gThreadClient.source(packet.frame.where.source);
|
||||
let location = {
|
||||
line: gDebuggee.line0 + 2
|
||||
};
|
||||
|
||||
let [res, bpClient] = yield setBreakpoint(source, location);
|
||||
ok(!res.error);
|
||||
|
||||
let location2 = {
|
||||
line: gDebuggee.line0 + 5
|
||||
};
|
||||
|
||||
yield source.setBreakpoint(location2).then(_ => {
|
||||
do_throw("no code shall not be found the specified line or below it");
|
||||
}, reason => {
|
||||
do_check_eq(reason.error, "noCodeAtLineColumn");
|
||||
ok(reason.message);
|
||||
});
|
||||
|
||||
yield resume(gThreadClient);
|
||||
finishClient(gClient);
|
||||
});
|
||||
|
||||
function evalCode() {
|
||||
// Start a new script
|
||||
Components.utils.evalInSandbox(`
|
||||
var line0 = Error().lineNumber;
|
||||
function some_function() {
|
||||
// breakpoint is valid here -- it slides one line below (line0 + 2)
|
||||
}
|
||||
debugger;
|
||||
// no breakpoint is allowed here (line0 + 5)
|
||||
`, gDebuggee);
|
||||
}
|
@ -130,6 +130,7 @@ skip-if = true
|
||||
reason = bug 1104838
|
||||
[test_breakpoint-20.js]
|
||||
[test_breakpoint-21.js]
|
||||
[test_breakpoint-22.js]
|
||||
[test_conditional_breakpoint-01.js]
|
||||
[test_conditional_breakpoint-02.js]
|
||||
[test_conditional_breakpoint-03.js]
|
||||
|
Loading…
Reference in New Issue
Block a user