summaryrefslogtreecommitdiffstats
path: root/devtools/client/commandline/test/browser_gcli_canon.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_canon.js')
-rw-r--r--devtools/client/commandline/test/browser_gcli_canon.js286
1 files changed, 286 insertions, 0 deletions
diff --git a/devtools/client/commandline/test/browser_gcli_canon.js b/devtools/client/commandline/test/browser_gcli_canon.js
new file mode 100644
index 000000000..807244505
--- /dev/null
+++ b/devtools/client/commandline/test/browser_gcli_canon.js
@@ -0,0 +1,286 @@
+/*
+ * 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_canon.js");
+}
+
+// var assert = require('../testharness/assert');
+// var helpers = require('./helpers');
+var Commands = require("gcli/commands/commands").Commands;
+
+var startCount;
+var events;
+
+var commandsChange = function (ev) {
+ events++;
+};
+
+exports.setup = function (options) {
+ startCount = options.requisition.system.commands.getAll().length;
+ events = 0;
+};
+
+exports.shutdown = function (options) {
+ startCount = undefined;
+ events = undefined;
+};
+
+exports.testAddRemove1 = function (options) {
+ var commands = options.requisition.system.commands;
+
+ return helpers.audit(options, [
+ {
+ name: "testadd add",
+ setup: function () {
+ commands.onCommandsChange.add(commandsChange);
+
+ commands.add({
+ name: "testadd",
+ exec: function () {
+ return 1;
+ }
+ });
+
+ assert.is(commands.getAll().length,
+ startCount + 1,
+ "add command success");
+ assert.is(events, 1, "add event");
+
+ return helpers.setInput(options, "testadd");
+ },
+ check: {
+ input: "testadd",
+ hints: "",
+ markup: "VVVVVVV",
+ cursor: 7,
+ current: "__command",
+ status: "VALID",
+ predictions: [ ],
+ unassigned: [ ],
+ args: { }
+ },
+ exec: {
+ output: /^1$/
+ }
+ },
+ {
+ name: "testadd alter",
+ setup: function () {
+ commands.add({
+ name: "testadd",
+ exec: function () {
+ return 2;
+ }
+ });
+
+ assert.is(commands.getAll().length,
+ startCount + 1,
+ "read command success");
+ assert.is(events, 2, "read event");
+
+ return helpers.setInput(options, "testadd");
+ },
+ check: {
+ input: "testadd",
+ hints: "",
+ markup: "VVVVVVV",
+ },
+ exec: {
+ output: "2"
+ }
+ },
+ {
+ name: "testadd remove",
+ setup: function () {
+ commands.remove("testadd");
+
+ assert.is(commands.getAll().length,
+ startCount,
+ "remove command success");
+ assert.is(events, 3, "remove event");
+
+ return helpers.setInput(options, "testadd");
+ },
+ check: {
+ typed: "testadd",
+ cursor: 7,
+ current: "__command",
+ status: "ERROR",
+ unassigned: [ ],
+ }
+ }
+ ]);
+};
+
+exports.testAddRemove2 = function (options) {
+ var commands = options.requisition.system.commands;
+
+ commands.add({
+ name: "testadd",
+ exec: function () {
+ return 3;
+ }
+ });
+
+ assert.is(commands.getAll().length,
+ startCount + 1,
+ "rereadd command success");
+ assert.is(events, 4, "rereadd event");
+
+ return helpers.audit(options, [
+ {
+ setup: "testadd",
+ exec: {
+ output: /^3$/
+ },
+ post: function () {
+ commands.remove({
+ name: "testadd"
+ });
+
+ assert.is(commands.getAll().length,
+ startCount,
+ "reremove command success");
+ assert.is(events, 5, "reremove event");
+ }
+ },
+ {
+ setup: "testadd",
+ check: {
+ typed: "testadd",
+ status: "ERROR"
+ }
+ }
+ ]);
+};
+
+exports.testAddRemove3 = function (options) {
+ var commands = options.requisition.system.commands;
+
+ commands.remove({ name: "nonexistant" });
+ assert.is(commands.getAll().length,
+ startCount,
+ "nonexistant1 command success");
+ assert.is(events, 5, "nonexistant1 event");
+
+ commands.remove("nonexistant");
+ assert.is(commands.getAll().length,
+ startCount,
+ "nonexistant2 command success");
+ assert.is(events, 5, "nonexistant2 event");
+
+ commands.onCommandsChange.remove(commandsChange);
+};
+
+exports.testAltCommands = function (options) {
+ var commands = options.requisition.system.commands;
+ var altCommands = new Commands(options.requisition.system.types);
+
+ var tss = {
+ name: "tss",
+ params: [
+ { name: "str", type: "string" },
+ { name: "num", type: "number" },
+ { name: "opt", type: { name: "selection", data: [ "1", "2", "3" ] } },
+ ],
+ customProp1: "localValue",
+ customProp2: true,
+ customProp3: 42,
+ exec: function (args, context) {
+ return context.commandName + ":" +
+ args.str + ":" + args.num + ":" + args.opt;
+ }
+ };
+ altCommands.add(tss);
+
+ var commandSpecs = altCommands.getCommandSpecs();
+ assert.is(JSON.stringify(commandSpecs),
+ '[{"item":"command","name":"tss","params":[' +
+ '{"name":"str","type":"string"},' +
+ '{"name":"num","type":"number"},' +
+ '{"name":"opt","type":{"name":"selection","data":["1","2","3"]}}' +
+ '],"isParent":false}]',
+ "JSON.stringify(commandSpecs)");
+
+ var customProps = [ "customProp1", "customProp2", "customProp3", ];
+ var commandSpecs2 = altCommands.getCommandSpecs(customProps);
+ assert.is(JSON.stringify(commandSpecs2),
+ "[{" +
+ '"item":"command",' +
+ '"name":"tss",' +
+ '"params":[' +
+ '{"name":"str","type":"string"},' +
+ '{"name":"num","type":"number"},' +
+ '{"name":"opt","type":{"name":"selection","data":["1","2","3"]}}' +
+ "]," +
+ '"isParent":false,' +
+ '"customProp1":"localValue",' +
+ '"customProp2":true,' +
+ '"customProp3":42' +
+ "}]",
+ "JSON.stringify(commandSpecs)");
+
+ var remoter = function (args, context) {
+ assert.is(context.commandName, "tss", "commandName is tss");
+
+ var cmd = altCommands.get(context.commandName);
+ return cmd.exec(args, context);
+ };
+
+ commands.addProxyCommands(commandSpecs, remoter, "proxy", "test");
+
+ var parent = commands.get("proxy");
+ assert.is(parent.name, "proxy", "Parent command called proxy");
+
+ var child = commands.get("proxy tss");
+ assert.is(child.name, "proxy tss", "child command called proxy tss");
+
+ return helpers.audit(options, [
+ {
+ setup: "proxy tss foo 6 3",
+ check: {
+ input: "proxy tss foo 6 3",
+ hints: "",
+ markup: "VVVVVVVVVVVVVVVVV",
+ cursor: 17,
+ status: "VALID",
+ args: {
+ str: { value: "foo", status: "VALID" },
+ num: { value: 6, status: "VALID" },
+ opt: { value: "3", status: "VALID" }
+ }
+ },
+ exec: {
+ output: "tss:foo:6:3"
+ },
+ post: function () {
+ commands.remove("proxy");
+ commands.remove("proxy tss");
+
+ assert.is(commands.get("proxy"), undefined, "remove proxy");
+ assert.is(commands.get("proxy tss"), undefined, "remove proxy tss");
+ }
+ }
+ ]);
+};