gecko-dev/devtools/client/commandline/test/browser_gcli_cli2.js

789 строки
19 KiB
JavaScript

/*
* Copyright 2012, Mozilla Foundation and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
"use strict";
// THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
// PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
const exports = {};
function test() {
helpers.runTestModule(exports, "browser_gcli_cli2.js");
}
// var helpers = require('./helpers');
exports.testSingleString = function (options) {
return helpers.audit(options, [
{
setup: "tsr",
check: {
input: "tsr",
hints: " <text>",
markup: "VVV",
cursor: 3,
current: "__command",
status: "ERROR",
unassigned: [ ],
args: {
command: { name: "tsr" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsr ",
check: {
input: "tsr ",
hints: "<text>",
markup: "VVVV",
cursor: 4,
current: "text",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsr" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsr h",
check: {
input: "tsr h",
hints: "",
markup: "VVVVV",
cursor: 5,
current: "text",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsr" },
text: {
value: "h",
arg: " h",
status: "VALID",
message: ""
}
}
}
},
{
setup: 'tsr "h h"',
check: {
input: 'tsr "h h"',
hints: "",
markup: "VVVVVVVVV",
cursor: 9,
current: "text",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsr" },
text: {
value: "h h",
arg: ' "h h"',
status: "VALID",
message: ""
}
}
}
},
{
setup: "tsr h h h",
check: {
input: "tsr h h h",
hints: "",
markup: "VVVVVVVVV",
cursor: 9,
current: "text",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsr" },
text: {
value: "h h h",
arg: " h h h",
status: "VALID",
message: ""
}
}
}
}
]);
};
exports.testSingleNumber = function (options) {
return helpers.audit(options, [
{
setup: "tsu",
check: {
input: "tsu",
hints: " <num>",
markup: "VVV",
cursor: 3,
current: "__command",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsu" },
num: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018num\u2019."
}
}
}
},
{
setup: "tsu ",
check: {
input: "tsu ",
hints: "<num>",
markup: "VVVV",
cursor: 4,
current: "num",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsu" },
num: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018num\u2019."
}
}
}
},
{
setup: "tsu 1",
check: {
input: "tsu 1",
hints: "",
markup: "VVVVV",
cursor: 5,
current: "num",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsu" },
num: { value: 1, arg: " 1", status: "VALID", message: "" }
}
}
},
{
setup: "tsu x",
check: {
input: "tsu x",
hints: "",
markup: "VVVVE",
cursor: 5,
current: "num",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
tooltipState: "true:isError",
args: {
command: { name: "tsu" },
num: {
value: undefined,
arg: " x",
status: "ERROR",
message: "Can\u2019t convert \u201cx\u201d to a number."
}
}
}
},
{
setup: "tsu 1.5",
check: {
input: "tsu 1.5",
hints: "",
markup: "VVVVEEE",
cursor: 7,
current: "num",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsu" },
num: {
value: undefined,
arg: " 1.5",
status: "ERROR",
message: "Can\u2019t convert \u201c1.5\u201d to an integer."
}
}
}
}
]);
};
exports.testSingleFloat = function (options) {
return helpers.audit(options, [
{
setup: "tsf",
check: {
input: "tsf",
hints: " <num>",
markup: "VVV",
cursor: 3,
current: "__command",
status: "ERROR",
error: "",
unassigned: [ ],
args: {
command: { name: "tsf" },
num: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018num\u2019."
}
}
}
},
{
setup: "tsf 1",
check: {
input: "tsf 1",
hints: "",
markup: "VVVVV",
cursor: 5,
current: "num",
status: "VALID",
error: "",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsf" },
num: { value: 1, arg: " 1", status: "VALID", message: "" }
}
}
},
{
setup: "tsf 1.",
check: {
input: "tsf 1.",
hints: "",
markup: "VVVVVV",
cursor: 6,
current: "num",
status: "VALID",
error: "",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsf" },
num: { value: 1, arg: " 1.", status: "VALID", message: "" }
}
}
},
{
setup: "tsf 1.5",
check: {
input: "tsf 1.5",
hints: "",
markup: "VVVVVVV",
cursor: 7,
current: "num",
status: "VALID",
error: "",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsf" },
num: { value: 1.5, arg: " 1.5", status: "VALID", message: "" }
}
}
},
{
setup: "tsf 1.5x",
check: {
input: "tsf 1.5x",
hints: "",
markup: "VVVVVVVV",
cursor: 8,
current: "num",
status: "VALID",
error: "",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsf" },
num: { value: 1.5, arg: " 1.5x", status: "VALID", message: "" }
}
}
},
{
name: "tsf x (cursor=4)",
setup: function () {
return helpers.setInput(options, "tsf x", 4);
},
check: {
input: "tsf x",
hints: "",
markup: "VVVVE",
cursor: 4,
current: "num",
status: "ERROR",
error: "Can\u2019t convert \u201cx\u201d to a number.",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsf" },
num: {
value: undefined,
arg: " x",
status: "ERROR",
message: "Can\u2019t convert \u201cx\u201d to a number."
}
}
}
}
]);
};
exports.testElementWeb = function (options) {
return helpers.audit(options, [
{
setup: "tse #gcli-root",
check: {
input: "tse #gcli-root",
hints: " [options]",
markup: "VVVVVVVVVVVVVV",
cursor: 14,
current: "node",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tse" },
node: {
arg: " #gcli-root",
status: "VALID",
message: ""
},
nodes: { arg: "", status: "VALID", message: "" },
nodes2: { arg: "", status: "VALID", message: "" },
}
}
}
]);
};
exports.testElement = function (options) {
return helpers.audit(options, [
{
setup: "tse",
check: {
input: "tse",
hints: " <node> [options]",
markup: "VVV",
cursor: 3,
current: "__command",
status: "ERROR",
predictions: [ "tse", "tselarr" ],
unassigned: [ ],
args: {
command: { name: "tse" },
node: { arg: "", status: "INCOMPLETE" },
nodes: { arg: "", status: "VALID", message: "" },
nodes2: { arg: "", status: "VALID", message: "" },
}
}
},
{
setup: "tse #gcli-nomatch",
check: {
input: "tse #gcli-nomatch",
hints: " [options]",
markup: "VVVVIIIIIIIIIIIII",
cursor: 17,
current: "node",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
outputState: "false:default",
tooltipState: "true:isError",
args: {
command: { name: "tse" },
node: {
value: undefined,
arg: " #gcli-nomatch",
// This is somewhat debatable because this input can't be corrected
// simply by typing so it's and error rather than incomplete,
// however without digging into the CSS engine we can't tell that
// so we default to incomplete
status: "INCOMPLETE",
message: "No matches"
},
nodes: { arg: "", status: "VALID", message: "" },
nodes2: { arg: "", status: "VALID", message: "" },
}
}
},
{
setup: "tse #",
check: {
input: "tse #",
hints: " [options]",
markup: "VVVVE",
cursor: 5,
current: "node",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
tooltipState: "true:isError",
args: {
command: { name: "tse" },
node: {
value: undefined,
arg: " #",
status: "ERROR",
message: "Syntax error in CSS query"
},
nodes: { arg: "", status: "VALID", message: "" },
nodes2: { arg: "", status: "VALID", message: "" },
}
}
},
{
setup: "tse .",
check: {
input: "tse .",
hints: " [options]",
markup: "VVVVE",
cursor: 5,
current: "node",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
tooltipState: "true:isError",
args: {
command: { name: "tse" },
node: {
value: undefined,
arg: " .",
status: "ERROR",
message: "Syntax error in CSS query"
},
nodes: { arg: "", status: "VALID", message: "" },
nodes2: { arg: "", status: "VALID", message: "" },
}
}
},
{
setup: "tse *",
check: {
input: "tse *",
hints: " [options]",
markup: "VVVVE",
cursor: 5,
current: "node",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
tooltipState: "true:isError",
args: {
command: { name: "tse" },
node: {
value: undefined,
arg: " *",
status: "ERROR",
message: /^Too many matches \([0-9]*\)/
},
nodes: { arg: "", status: "VALID", message: "" },
nodes2: { arg: "", status: "VALID", message: "" },
}
}
}
]);
};
exports.testNestedCommand = function (options) {
return helpers.audit(options, [
{
setup: "tsn",
check: {
input: "tsn",
hints: " deep down nested cmd",
markup: "III",
cursor: 3,
current: "__command",
status: "ERROR",
predictionsInclude: [
"tsn deep", "tsn deep down", "tsn deep down nested",
"tsn deep down nested cmd", "tsn dif"
],
unassigned: [ ],
args: {
command: { name: "tsn" }
}
}
},
{
setup: "tsn ",
check: {
input: "tsn ",
hints: " deep down nested cmd",
markup: "IIIV",
cursor: 4,
current: "__command",
status: "ERROR",
unassigned: [ ]
}
},
{
skipIf: options.isPhantomjs, // PhantomJS gets predictions wrong
setup: "tsn x",
check: {
input: "tsn x",
hints: " -> tsn ext",
markup: "IIIVI",
cursor: 5,
current: "__command",
status: "ERROR",
predictions: [ "tsn ext" ],
unassigned: [ ]
}
},
{
setup: "tsn dif",
check: {
input: "tsn dif",
hints: " <text>",
markup: "VVVVVVV",
cursor: 7,
current: "__command",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsn dif" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsn dif ",
check: {
input: "tsn dif ",
hints: "<text>",
markup: "VVVVVVVV",
cursor: 8,
current: "text",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsn dif" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsn dif x",
check: {
input: "tsn dif x",
hints: "",
markup: "VVVVVVVVV",
cursor: 9,
current: "text",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsn dif" },
text: { value: "x", arg: " x", status: "VALID", message: "" }
}
}
},
{
setup: "tsn ext",
check: {
input: "tsn ext",
hints: " <text>",
markup: "VVVVVVV",
cursor: 7,
current: "__command",
status: "ERROR",
predictions: [ "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
unassigned: [ ],
args: {
command: { name: "tsn ext" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsn exte",
check: {
input: "tsn exte",
hints: " <text>",
markup: "VVVVVVVV",
cursor: 8,
current: "__command",
status: "ERROR",
predictions: [ "tsn exte", "tsn exten", "tsn extend" ],
unassigned: [ ],
args: {
command: { name: "tsn exte" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsn exten",
check: {
input: "tsn exten",
hints: " <text>",
markup: "VVVVVVVVV",
cursor: 9,
current: "__command",
status: "ERROR",
predictions: [ "tsn exten", "tsn extend" ],
unassigned: [ ],
args: {
command: { name: "tsn exten" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "tsn extend",
check: {
input: "tsn extend",
hints: " <text>",
markup: "VVVVVVVVVV",
cursor: 10,
current: "__command",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsn extend" },
text: {
value: undefined,
arg: "",
status: "INCOMPLETE",
message: "Value required for \u2018text\u2019."
}
}
}
},
{
setup: "ts ",
check: {
input: "ts ",
hints: "",
markup: "EEV",
cursor: 3,
current: "__command",
status: "ERROR",
predictions: [ ],
unassigned: [ ],
tooltipState: "true:isError"
}
},
]);
};
// From Bug 664203
exports.testDeeplyNested = function (options) {
return helpers.audit(options, [
{
setup: "tsn deep down nested",
check: {
input: "tsn deep down nested",
hints: " cmd",
markup: "IIIVIIIIVIIIIVIIIIII",
cursor: 20,
current: "__command",
status: "ERROR",
predictions: [ "tsn deep down nested cmd" ],
unassigned: [ ],
outputState: "false:default",
tooltipState: "false:default",
args: {
command: { name: "tsn deep down nested" },
}
}
},
{
setup: "tsn deep down nested cmd",
check: {
input: "tsn deep down nested cmd",
hints: "",
markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
cursor: 24,
current: "__command",
status: "VALID",
predictions: [ ],
unassigned: [ ],
args: {
command: { name: "tsn deep down nested cmd" },
}
}
}
]);
};