gecko-dev/devtools/client/webconsole/test/browser_webconsole_multiline_input.js
J. Ryan Stinnett 30b2b7ce44 Bug 1271084 - Apply ESLint autofixes to ignored /devtools files. r=tromey
For simple rules like function spacing, we can auto-fix these across the code
base so they are followed in a consistent way.

To generate this patch, I ran:

./mach eslint devtools --no-ignore --fix

After this, I reverted any changes to third party files that we really do want
to ignore.

MozReview-Commit-ID: 6Q8BApkAW20
2016-05-18 12:49:23 -05:00

71 lines
2.3 KiB
JavaScript

/* vim:set ts=2 sw=2 sts=2 et: */
/* 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/test-console.html";
let 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 },
];
let 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(function* () {
let { tab, browser } = yield loadTab(TEST_URI);
let hud = yield openConsole();
let inputNode = hud.jsterm.inputNode;
for (let test of SHOULD_ENTER_MULTILINE) {
hud.jsterm.setInputValue(test.input);
EventUtils.synthesizeKey("VK_RETURN", { shiftKey: test.shiftKey });
let inputValue = hud.jsterm.getInputValue();
is(inputNode.selectionStart, inputNode.selectionEnd,
"selection is collapsed");
is(inputNode.selectionStart, inputValue.length,
"caret at end of multiline input");
let inputWithNewline = test.input + "\n";
is(inputValue, inputWithNewline, "Input value is correct");
}
for (let test of SHOULD_EXECUTE) {
hud.jsterm.setInputValue(test.input);
EventUtils.synthesizeKey("VK_RETURN", { shiftKey: test.shiftKey });
let inputValue = hud.jsterm.getInputValue();
is(inputNode.selectionStart, 0, "selection starts/ends at 0");
is(inputNode.selectionEnd, 0, "selection starts/ends at 0");
is(inputValue, "", "Input value is cleared");
}
});