65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
// Tests that the console waits for more input instead of evaluating
|
|
// when valid, but incomplete, statements are present upon pressing enter
|
|
// -or- when the user ends a line with shift + enter.
|
|
|
|
"use strict";
|
|
|
|
const TEST_URI =
|
|
"http://example.com/browser/devtools/client/webconsole/test/browser/test-console.html";
|
|
|
|
const SHOULD_ENTER_MULTILINE = [
|
|
{ input: "function foo() {" },
|
|
{ input: "var a = 1," },
|
|
{ input: "var a = 1;", shiftKey: true },
|
|
{ input: "function foo() { }", shiftKey: true },
|
|
{ input: "function" },
|
|
{ input: "(x) =>" },
|
|
{ input: "let b = {" },
|
|
{ input: "let a = [" },
|
|
{ input: "{" },
|
|
{ input: "{ bob: 3343," },
|
|
{ input: "function x(y=" },
|
|
{ input: "Array.from(" },
|
|
// shift + enter creates a new line despite parse errors
|
|
{ input: "{2,}", shiftKey: true },
|
|
];
|
|
const SHOULD_EXECUTE = [
|
|
{ input: "function foo() { }" },
|
|
{ input: "var a = 1;" },
|
|
{ input: "function foo() { var a = 1; }" },
|
|
{ input: '"asdf"' },
|
|
{ input: "99 + 3" },
|
|
{ input: "1, 2, 3" },
|
|
// errors
|
|
{ input: "function f(x) { let y = 1, }" },
|
|
{ input: "function f(x=,) {" },
|
|
{ input: "{2,}" },
|
|
];
|
|
|
|
add_task(async function () {
|
|
const hud = await openNewTabAndConsole(TEST_URI);
|
|
|
|
for (const { input, shiftKey } of SHOULD_ENTER_MULTILINE) {
|
|
setInputValue(hud, input);
|
|
EventUtils.synthesizeKey("VK_RETURN", { shiftKey });
|
|
|
|
// We need to remove the spaces at the end of the input since code mirror do some
|
|
// automatic indent in some case.
|
|
const newValue = getInputValue(hud).replace(/ +$/g, "");
|
|
is(newValue, input + "\n", "A new line was added");
|
|
}
|
|
|
|
for (const { input, shiftKey } of SHOULD_EXECUTE) {
|
|
setInputValue(hud, input);
|
|
const onMessage = waitForMessageByType(hud, "", ".result");
|
|
EventUtils.synthesizeKey("VK_RETURN", { shiftKey });
|
|
await onMessage;
|
|
|
|
await waitFor(() => !getInputValue(hud));
|
|
is(getInputValue(hud), "", "Input is cleared");
|
|
}
|
|
});
|