Mypal/devtools/client/scratchpad/test/browser_scratchpad_run_error_goto_line.js
2021-02-04 16:48:36 +02:00

60 lines
2.0 KiB
JavaScript

/* -*- indent-tabs-mode: nil; js-indent-level: 2; fill-column: 80 -*- */
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
function test()
{
waitForExplicitFinish();
gBrowser.selectedTab = gBrowser.addTab();
gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
openScratchpad(runTests);
}, true);
content.location = "data:text/html;charset=utf8,test Scratchpad pretty print.";
}
function runTests(sw)
{
const sp = sw.Scratchpad;
sp.setText([
"// line 1",
"// line 2",
"var re = /a bad /regexp/; // line 3 is an obvious syntax error!",
"// line 4",
"// line 5",
""
].join("\n"));
sp.run().then(() => {
// CodeMirror lines and columns are 0-based, Scratchpad UI and error
// stack are 1-based.
let errorLine = 3;
let editorDoc = sp.editor.container.contentDocument;
sp.editor.jumpToLine();
let lineInput = editorDoc.querySelector("input");
let inputLine = lineInput.value;
is(inputLine, errorLine, "jumpToLine input field is set from editor selection");
EventUtils.synthesizeKey("VK_RETURN", { }, editorDoc.defaultView);
// CodeMirror lines and columns are 0-based, Scratchpad UI and error
// stack are 1-based.
let cursor = sp.editor.getCursor();
is(cursor.line + 1, inputLine, "jumpToLine goto error location (line)");
is(cursor.ch + 1, 1, "jumpToLine goto error location (column)");
}, error => {
ok(false, error);
finish();
}).then(() => {
var statusBarField = sp.editor.container.ownerDocument.querySelector("#statusbar-line-col");
let { line, ch } = sp.editor.getCursor();
is(statusBarField.textContent, sp.strings.formatStringFromName(
"scratchpad.statusBarLineCol", [ line + 1, ch + 1], 2), "statusbar text is correct (" + statusBarField.textContent + ")");
finish();
}, error => {
ok(false, error);
finish();
});
}