diff options
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_exec.js')
-rw-r--r-- | devtools/client/commandline/test/browser_gcli_exec.js | 656 |
1 files changed, 656 insertions, 0 deletions
diff --git a/devtools/client/commandline/test/browser_gcli_exec.js b/devtools/client/commandline/test/browser_gcli_exec.js new file mode 100644 index 000000000..ef3b9fffe --- /dev/null +++ b/devtools/client/commandline/test/browser_gcli_exec.js @@ -0,0 +1,656 @@ +/* + * 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_exec.js"); +} + +// var assert = require('../testharness/assert'); +// var helpers = require('./helpers'); + +exports.testParamGroup = function (options) { + var tsg = options.requisition.system.commands.get("tsg"); + + assert.is(tsg.params[0].groupName, null, "tsg param 0 group null"); + assert.is(tsg.params[1].groupName, "First", "tsg param 1 group First"); + assert.is(tsg.params[2].groupName, "First", "tsg param 2 group First"); + assert.is(tsg.params[3].groupName, "Second", "tsg param 3 group Second"); + assert.is(tsg.params[4].groupName, "Second", "tsg param 4 group Second"); +}; + +exports.testWithHelpers = function (options) { + return helpers.audit(options, [ + { + setup: "tss", + check: { + input: "tss", + hints: "", + markup: "VVV", + cursor: 3, + current: "__command", + status: "VALID", + unassigned: [ ], + args: { + command: { name: "tss" }, + } + }, + exec: { + output: /^Exec: tss/, + } + }, + { + setup: "tsv option1 10", + check: { + input: "tsv option1 10", + hints: "", + markup: "VVVVVVVVVVVVVV", + cursor: 14, + current: "optionValue", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsv" }, + optionType: { + value: "string", + arg: " option1", + status: "VALID", + message: "" + }, + optionValue: { + arg: " 10", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsv optionType=option1 optionValue=10" + } + }, + { + setup: "tsv option2 10", + check: { + input: "tsv option2 10", + hints: "", + markup: "VVVVVVVVVVVVVV", + cursor: 14, + current: "optionValue", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsv" }, + optionType: { + value: "number", + arg: " option2", + status: "VALID", + message: "" + }, + optionValue: { + arg: " 10", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsv optionType=option2 optionValue=10" + } + }, + // Delegated remote types can't transfer value types so we only test for + // the value of optionValue when we're local + { + skipIf: options.isRemote, + setup: "tsv option1 10", + check: { + args: { optionValue: { value: "10" } } + }, + exec: { + output: "Exec: tsv optionType=option1 optionValue=10" + } + }, + { + skipIf: options.isRemote, + setup: "tsv option2 10", + check: { + args: { optionValue: { value: 10 } } + }, + exec: { + output: "Exec: tsv optionType=option2 optionValue=10" + } + } + ]); +}; + +exports.testExecText = function (options) { + return helpers.audit(options, [ + { + setup: "tsr fred", + check: { + input: "tsr fred", + hints: "", + markup: "VVVVVVVV", + cursor: 8, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsr" }, + text: { + value: "fred", + arg: " fred", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsr text=fred" + } + }, + { + setup: "tsr fred bloggs", + check: { + input: "tsr fred bloggs", + hints: "", + markup: "VVVVVVVVVVVVVVV", + cursor: 15, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsr" }, + text: { + value: "fred bloggs", + arg: " fred bloggs", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsr text=fred\\ bloggs" + } + }, + { + setup: 'tsr "fred bloggs"', + check: { + input: 'tsr "fred bloggs"', + hints: "", + markup: "VVVVVVVVVVVVVVVVV", + cursor: 17, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsr" }, + text: { + value: "fred bloggs", + arg: ' "fred bloggs"', + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsr text=fred\\ bloggs" + } + }, + { + setup: 'tsr "fred bloggs', + check: { + input: 'tsr "fred bloggs', + hints: "", + markup: "VVVVVVVVVVVVVVVV", + cursor: 16, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsr" }, + text: { + value: "fred bloggs", + arg: ' "fred bloggs', + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsr text=fred\\ bloggs" + } + } + ]); +}; + +exports.testExecBoolean = function (options) { + return helpers.audit(options, [ + { + setup: "tsb", + check: { + input: "tsb", + hints: " [toggle]", + markup: "VVV", + cursor: 3, + current: "__command", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsb" }, + toggle: { + value: false, + arg: "", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsb toggle=false" + } + }, + { + setup: "tsb --toggle", + check: { + input: "tsb --toggle", + hints: "", + markup: "VVVVVVVVVVVV", + cursor: 12, + current: "toggle", + status: "VALID", + predictions: [ ], + unassigned: [ ], + outputState: "false:default", + args: { + command: { name: "tsb" }, + toggle: { + value: true, + arg: " --toggle", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsb toggle=true" + } + } + ]); +}; + +exports.testExecNumber = function (options) { + return helpers.audit(options, [ + { + setup: "tsu 10", + check: { + input: "tsu 10", + hints: "", + markup: "VVVVVV", + cursor: 6, + current: "num", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsu" }, + num: { value: 10, arg: " 10", status: "VALID", message: "" } + } + }, + exec: { + output: "Exec: tsu num=10" + } + }, + { + setup: "tsu --num 10", + check: { + input: "tsu --num 10", + hints: "", + markup: "VVVVVVVVVVVV", + cursor: 12, + current: "num", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsu" }, + num: { value: 10, arg: " --num 10", status: "VALID", message: "" } + } + }, + exec: { + output: "Exec: tsu num=10" + } + } + ]); +}; + +exports.testExecScript = function (options) { + return helpers.audit(options, [ + { + // Bug 704829 - Enable GCLI Javascript parameters + // The answer to this should be 2 + setup: "tsj { 1 + 1 }", + check: { + input: "tsj { 1 + 1 }", + hints: "", + markup: "VVVVVVVVVVVVV", + cursor: 13, + current: "javascript", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsj" }, + javascript: { + arg: " { 1 + 1 }", + status: "VALID", + message: "" + } + } + }, + exec: { + output: "Exec: tsj javascript=1 + 1" + } + } + ]); +}; + +exports.testExecNode = function (options) { + return helpers.audit(options, [ + { + skipIf: options.isRemote, + setup: "tse :root", + check: { + input: "tse :root", + hints: " [options]", + markup: "VVVVVVVVV", + cursor: 9, + current: "node", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tse" }, + node: { + arg: " :root", + status: "VALID", + message: "" + }, + nodes: { + arg: "", + status: "VALID", + message: "" + }, + nodes2: { + arg: "", + status: "VALID", + message: "" + } + } + }, + exec: { + output: /^Exec: tse/ + }, + post: function (output) { + assert.is(output.data.args.node, ":root", "node should be :root"); + assert.is(output.data.args.nodes, "Error", "nodes should be Error"); + assert.is(output.data.args.nodes2, "Error", "nodes2 should be Error"); + } + } + ]); +}; + +exports.testExecSubCommand = function (options) { + return helpers.audit(options, [ + { + setup: "tsn dif fred", + check: { + input: "tsn dif fred", + hints: "", + markup: "VVVVVVVVVVVV", + cursor: 12, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsn dif" }, + text: { value: "fred", arg: " fred", status: "VALID", message: "" } + } + }, + exec: { + output: "Exec: tsnDif text=fred" + } + }, + { + setup: "tsn exten fred", + check: { + input: "tsn exten fred", + hints: "", + markup: "VVVVVVVVVVVVVV", + cursor: 14, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsn exten" }, + text: { value: "fred", arg: " fred", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tsnExten text=fred" + } + }, + { + setup: "tsn extend fred", + check: { + input: "tsn extend fred", + hints: "", + markup: "VVVVVVVVVVVVVVV", + cursor: 15, + current: "text", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsn extend" }, + text: { value: "fred", arg: " fred", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tsnExtend text=fred" + } + } + ]); +}; + +exports.testExecArray = function (options) { + return helpers.audit(options, [ + { + setup: "tselarr 1", + check: { + input: "tselarr 1", + hints: "", + markup: "VVVVVVVVV", + cursor: 9, + current: "num", + status: "VALID", + predictions: ["1"], + unassigned: [ ], + outputState: "false:default", + args: { + command: { name: "tselarr" }, + num: { value: "1", arg: " 1", status: "VALID", message: "" }, + arr: { /* value:,*/ arg: "{}", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tselarr num=1 arr=" + } + }, + { + setup: "tselarr 1 a", + check: { + input: "tselarr 1 a", + hints: "", + markup: "VVVVVVVVVVV", + cursor: 11, + current: "arr", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tselarr" }, + num: { value: "1", arg: " 1", status: "VALID", message: "" }, + arr: { /* value:a,*/ arg: "{ a}", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tselarr num=1 arr=a" + } + }, + { + setup: "tselarr 1 a b", + check: { + input: "tselarr 1 a b", + hints: "", + markup: "VVVVVVVVVVVVV", + cursor: 13, + current: "arr", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tselarr" }, + num: { value: "1", arg: " 1", status: "VALID", message: "" }, + arr: { /* value:a,b,*/ arg: "{ a, b}", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tselarr num=1 arr=a b" + } + } + ]); +}; + +exports.testExecMultiple = function (options) { + return helpers.audit(options, [ + { + setup: "tsm a 10 10", + check: { + input: "tsm a 10 10", + hints: "", + markup: "VVVVVVVVVVV", + cursor: 11, + current: "num", + status: "VALID", + predictions: [ ], + unassigned: [ ], + args: { + command: { name: "tsm" }, + abc: { value: "a", arg: " a", status: "VALID", message: "" }, + txt: { value: "10", arg: " 10", status: "VALID", message: "" }, + num: { value: 10, arg: " 10", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tsm abc=a txt=10 num=10" + } + } + ]); +}; + +exports.testExecDefaults = function (options) { + return helpers.audit(options, [ + { + // Bug 707009 - GCLI doesn't always fill in default parameters properly + setup: "tsg aaa", + check: { + input: "tsg aaa", + hints: " [options]", + markup: "VVVVVVV", + cursor: 7, + current: "solo", + status: "VALID", + predictions: ["aaa"], + unassigned: [ ], + args: { + command: { name: "tsg" }, + solo: { value: "aaa", arg: " aaa", status: "VALID", message: "" }, + txt1: { value: undefined, arg: "", status: "VALID", message: "" }, + bool: { value: false, arg: "", status: "VALID", message: "" }, + txt2: { value: undefined, arg: "", status: "VALID", message: "" }, + num: { value: undefined, arg: "", status: "VALID", message: "" }, + } + }, + exec: { + output: "Exec: tsg solo=aaa txt1= bool=false txt2=d num=42" + } + } + ]); +}; + +exports.testNested = function (options) { + var commands = options.requisition.system.commands; + commands.add({ + name: "nestorama", + exec: function (args, context) { + return context.updateExec("tsb").then(function (tsbOutput) { + return context.updateExec("tsu 6").then(function (tsuOutput) { + return JSON.stringify({ + tsb: tsbOutput.data, + tsu: tsuOutput.data + }); + }); + }); + } + }); + + return helpers.audit(options, [ + { + setup: "nestorama", + exec: { + output: + "{" + + '"tsb":{' + + '"name":"tsb",' + + '"args":{"toggle":"false"}' + + "}," + + '"tsu":{' + + '"name":"tsu",' + + '"args":{"num":"6"}' + + "}" + + "}" + }, + post: function () { + commands.remove("nestorama"); + } + } + ]); +}; |