Bug 1438508 - Allows running brower_browser_toolbox_debugger.js more than once. r=jryans

The sandbox used in this test isn't immediately destroyed when the test finishes.
So use a unique file name to always refer to the expected sandbox/file in this debugger test.

MozReview-Commit-ID: FJYXPN0RQS2

--HG--
extra : rebase_source : 438ae8cf97bfef8bc11e86e7850b3d6d8e8f1ccc
This commit is contained in:
Alexandre Poirot 2018-02-14 09:54:03 -08:00
Родитель 0b75d2333d
Коммит 8e71d2a2f3
2 изменённых файлов: 17 добавлений и 9 удалений

Просмотреть файл

@ -32,10 +32,17 @@ add_task(function* runTest() {
});
let s = Cu.Sandbox("http://mozilla.org");
// Use a unique id for the fake script name in order to be able to run
// this test more than once. That's because the Sandbox is not immediately
// destroyed and so the debugger would display only one file but not necessarily
// connected to the latest sandbox.
let id = new Date().getTime();
// Pass a fake URL to evalInSandbox. If we just pass a filename,
// Debugger is going to fail and only display root folder (`/`) listing.
// But it won't try to fetch this url and use sandbox content as expected.
let testUrl = "http://mozilla.org/browser-toolbox-test.js";
let testUrl = `http://mozilla.org/browser-toolbox-test-${id}.js`;
Cu.evalInSandbox("(" + function () {
this.plop = function plop() {
return 1;
@ -117,7 +124,7 @@ add_task(function* runTest() {
// toolbox process
let testScript = (yield fetch(testScriptURL)).content;
let source =
"try {" + testHead + debuggerHead + testScript + "} catch (e) {" +
"try { let testUrl = \""+testUrl+"\";" + testHead + debuggerHead + testScript + "} catch (e) {" +
" dump('Exception: '+ e + ' at ' + e.fileName + ':' + " +
" e.lineNumber + '\\nStack: ' + e.stack + '\\n');" +
"}";

Просмотреть файл

@ -2,8 +2,6 @@
info(`START: ${new Error().lineNumber}`);
let testUrl = "http://mozilla.org/browser-toolbox-test.js";
Task.spawn(function* () {
Services.prefs.clearUserPref("devtools.debugger.tabs")
Services.prefs.clearUserPref("devtools.debugger.pending-selected-location")
@ -24,26 +22,29 @@ Task.spawn(function* () {
});
let arrow = domain.querySelector(".arrow");
arrow.click();
let fileName = testUrl.match(/browser-toolbox-test.*\.js/)[0];
let script = [...document.querySelectorAll(".tree-node")].find(node => {
return node.textContent.includes("browser-toolbox-test.js");
return node.textContent.includes(fileName);
});
script = script.querySelector(".node");
script.click();
let onPaused = waitForPaused(dbg);
yield addBreakpoint(dbg, "browser-toolbox-test.js", 2);
yield addBreakpoint(dbg, fileName, 2);
yield onPaused;
assertPausedLocation(dbg, "browser-toolbox-test.js", 2);
assertPausedLocation(dbg, fileName, 2);
yield stepIn(dbg);
assertPausedLocation(dbg, "browser-toolbox-test.js", 3);
assertPausedLocation(dbg, fileName, 3);
// Remove the breakpoint before resuming in order to prevent hitting the breakpoint
// again during test closing.
let source = findSource(dbg, "browser-toolbox-test.js");
let source = findSource(dbg, fileName);
yield removeBreakpoint(dbg, source.id, 2);
yield resume(dbg);