Bug 1461970 - Remove gcli tests using helpers.runTestModule (i.e all of them) and cleanup helpers.js from DeveloperToolbar usages. r=jryans draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Wed, 21 Mar 2018 09:02:02 -0700
changeset 796377 f020f21bf9d7bec659fa6e3e3a655c0d576847e4
parent 796376 83b494f958b041b7d5d4a1f2723b92ab03ed2769
child 796378 5e0711ff9520c35882fbfc34d7bbd4a1d3e9cf58
push id110236
push userbmo:poirot.alex@gmail.com
push dateThu, 17 May 2018 16:26:31 +0000
reviewersjryans
bugs1461970
milestone62.0a1
Bug 1461970 - Remove gcli tests using helpers.runTestModule (i.e all of them) and cleanup helpers.js from DeveloperToolbar usages. r=jryans MozReview-Commit-ID: YyE7W8jIlv
devtools/client/commandline/moz.build
devtools/client/commandline/test/browser.ini
devtools/client/commandline/test/browser.js
devtools/client/commandline/test/browser_cmd_settings.js
devtools/client/commandline/test/browser_gcli_async.js
devtools/client/commandline/test/browser_gcli_canon.js
devtools/client/commandline/test/browser_gcli_cli1.js
devtools/client/commandline/test/browser_gcli_cli2.js
devtools/client/commandline/test/browser_gcli_completion1.js
devtools/client/commandline/test/browser_gcli_completion2.js
devtools/client/commandline/test/browser_gcli_context.js
devtools/client/commandline/test/browser_gcli_date.js
devtools/client/commandline/test/browser_gcli_exec.js
devtools/client/commandline/test/browser_gcli_fail.js
devtools/client/commandline/test/browser_gcli_file.js
devtools/client/commandline/test/browser_gcli_fileparser.js
devtools/client/commandline/test/browser_gcli_filesystem.js
devtools/client/commandline/test/browser_gcli_focus.js
devtools/client/commandline/test/browser_gcli_history.js
devtools/client/commandline/test/browser_gcli_incomplete.js
devtools/client/commandline/test/browser_gcli_inputter.js
devtools/client/commandline/test/browser_gcli_intro.js
devtools/client/commandline/test/browser_gcli_js.js
devtools/client/commandline/test/browser_gcli_keyboard1.js
devtools/client/commandline/test/browser_gcli_keyboard2.js
devtools/client/commandline/test/browser_gcli_keyboard3.js
devtools/client/commandline/test/browser_gcli_keyboard4.js
devtools/client/commandline/test/browser_gcli_keyboard5.js
devtools/client/commandline/test/browser_gcli_keyboard6.js
devtools/client/commandline/test/browser_gcli_menu.js
devtools/client/commandline/test/browser_gcli_node.js
devtools/client/commandline/test/browser_gcli_pref1.js
devtools/client/commandline/test/browser_gcli_pref2.js
devtools/client/commandline/test/browser_gcli_remotews.js
devtools/client/commandline/test/browser_gcli_remotexhr.js
devtools/client/commandline/test/browser_gcli_resource.js
devtools/client/commandline/test/browser_gcli_short.js
devtools/client/commandline/test/browser_gcli_spell.js
devtools/client/commandline/test/browser_gcli_split.js
devtools/client/commandline/test/browser_gcli_string.js
devtools/client/commandline/test/browser_gcli_tokenize.js
devtools/client/commandline/test/browser_gcli_tooltip.js
devtools/client/commandline/test/browser_gcli_types.js
devtools/client/commandline/test/browser_gcli_union.js
devtools/client/commandline/test/browser_gcli_url.js
devtools/client/commandline/test/helpers.js
--- a/devtools/client/commandline/moz.build
+++ b/devtools/client/commandline/moz.build
@@ -1,5 +1,7 @@
 # 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/.
 
-BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
+BROWSER_CHROME_MANIFESTS += [
+  'test/browser.ini',
+]
--- a/devtools/client/commandline/test/browser.ini
+++ b/devtools/client/commandline/test/browser.ini
@@ -1,50 +1,13 @@
 [DEFAULT]
-skip-if = e10s # Bug 1034511
 tags = devtools
 subsuite = devtools
 support-files =
   head.js
   helpers.js
   mockCommands.js
 
-[browser_cmd_calllog.js]
-skip-if = true # Bug 845831
-[browser_cmd_calllog_chrome.js]
-skip-if = true # Bug 845831
-[browser_cmd_csscoverage_util.js]
-skip-if = (e10s && debug) # Bug 1034511 (docShell leaks on debug)
-[browser_cmd_settings.js]
-[browser_gcli_async.js]
-[browser_gcli_canon.js]
-[browser_gcli_cli1.js]
-[browser_gcli_cli2.js]
-[browser_gcli_completion1.js]
-[browser_gcli_completion2.js]
-[browser_gcli_date.js]
-skip-if = true # Bug 934098
-[browser_gcli_exec.js]
-[browser_gcli_fail.js]
-[browser_gcli_file.js]
-[browser_gcli_focus.js]
-[browser_gcli_history.js]
-[browser_gcli_incomplete.js]
-[browser_gcli_inputter.js]
-skip-if = true # Bug 1093205 - Test does not run in Firefox due to missing terminal bug
-[browser_gcli_intro.js]
-[browser_gcli_js.js]
-[browser_gcli_keyboard1.js]
-[browser_gcli_keyboard2.js]
-[browser_gcli_keyboard3.js]
-[browser_gcli_keyboard4.js]
-[browser_gcli_keyboard5.js]
-[browser_gcli_menu.js]
-[browser_gcli_node.js]
-[browser_gcli_resource.js]
-[browser_gcli_short.js]
-[browser_gcli_spell.js]
-[browser_gcli_split.js]
-[browser_gcli_tokenize.js]
-[browser_gcli_tooltip.js]
-skip-if = true # Bug 1093205 - Test does not run in Firefox due to missing terminal
-[browser_gcli_types.js]
-[browser_gcli_union.js]
+# Bug 1447494 - browser.ini file has to have at least one test file
+# browser.js is empty, we have this just to expose test helper files
+# for other folder still using it
+[browser.js]
+skip-if = true
new file mode 100644
--- /dev/null
+++ b/devtools/client/commandline/test/browser.js
@@ -0,0 +1,1 @@
+
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_cmd_settings.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-// Tests that the pref commands work
-
-var prefBranch = Cc["@mozilla.org/preferences-service;1"]
-                    .getService(Ci.nsIPrefService).getBranch(null)
-                    .QueryInterface(Ci.nsIPrefBranch);
-
-const TEST_URI = "data:text/html;charset=utf-8,gcli-settings";
-
-function test() {
-  return Task.spawn(spawnTest).then(finish, helpers.handleError);
-}
-
-function* spawnTest() {
-  // Setup
-  let options = yield helpers.openTab(TEST_URI);
-
-  const { createSystem } = require("gcli/system");
-  const system = createSystem({ location: "server" });
-
-  const gcliInit = require("devtools/shared/gcli/commands/index");
-  gcliInit.addAllItemsByModule(system);
-  yield system.load();
-
-  let settings = system.settings;
-
-  let hideIntroEnabled = settings.get("devtools.gcli.hideIntro");
-  let tabSize = settings.get("devtools.editor.tabsize");
-  let remoteHost = settings.get("devtools.debugger.remote-host");
-
-  let hideIntroOrig = prefBranch.getBoolPref("devtools.gcli.hideIntro");
-  let tabSizeOrig = prefBranch.getIntPref("devtools.editor.tabsize");
-  let remoteHostOrig = prefBranch.getStringPref(
-          "devtools.debugger.remote-host");
-
-  info("originally: devtools.gcli.hideIntro = " + hideIntroOrig);
-  info("originally: devtools.editor.tabsize = " + tabSizeOrig);
-  info("originally: devtools.debugger.remote-host = " + remoteHostOrig);
-
-  // Actual tests
-  is(hideIntroEnabled.value, hideIntroOrig, "hideIntroEnabled default");
-  is(tabSize.value, tabSizeOrig, "tabSize default");
-  is(remoteHost.value, remoteHostOrig, "remoteHost default");
-
-  hideIntroEnabled.setDefault();
-  tabSize.setDefault();
-  remoteHost.setDefault();
-
-  let hideIntroEnabledDefault = hideIntroEnabled.value;
-  let tabSizeDefault = tabSize.value;
-  let remoteHostDefault = remoteHost.value;
-
-  hideIntroEnabled.value = false;
-  tabSize.value = 42;
-  remoteHost.value = "example.com";
-
-  is(hideIntroEnabled.value, false, "hideIntroEnabled basic");
-  is(tabSize.value, 42, "tabSize basic");
-  is(remoteHost.value, "example.com", "remoteHost basic");
-
-  function hideIntroEnabledCheck(ev) {
-    is(ev.setting, hideIntroEnabled, "hideIntroEnabled event setting");
-    is(ev.value, true, "hideIntroEnabled event value");
-    is(ev.setting.value, true, "hideIntroEnabled event setting value");
-  }
-  hideIntroEnabled.onChange.add(hideIntroEnabledCheck);
-  hideIntroEnabled.value = true;
-  is(hideIntroEnabled.value, true, "hideIntroEnabled change");
-
-  function tabSizeCheck(ev) {
-    is(ev.setting, tabSize, "tabSize event setting");
-    is(ev.value, 1, "tabSize event value");
-    is(ev.setting.value, 1, "tabSize event setting value");
-  }
-  tabSize.onChange.add(tabSizeCheck);
-  tabSize.value = 1;
-  is(tabSize.value, 1, "tabSize change");
-
-  function remoteHostCheck(ev) {
-    is(ev.setting, remoteHost, "remoteHost event setting");
-    is(ev.value, "y.com", "remoteHost event value");
-    is(ev.setting.value, "y.com", "remoteHost event setting value");
-  }
-  remoteHost.onChange.add(remoteHostCheck);
-  remoteHost.value = "y.com";
-  is(remoteHost.value, "y.com", "remoteHost change");
-
-  hideIntroEnabled.onChange.remove(hideIntroEnabledCheck);
-  tabSize.onChange.remove(tabSizeCheck);
-  remoteHost.onChange.remove(remoteHostCheck);
-
-  function remoteHostReCheck(ev) {
-    is(ev.setting, remoteHost, "remoteHost event reset");
-    is(ev.value, null, "remoteHost event revalue");
-    is(ev.setting.value, null, "remoteHost event setting revalue");
-  }
-  remoteHost.onChange.add(remoteHostReCheck);
-
-  hideIntroEnabled.setDefault();
-  tabSize.setDefault();
-  remoteHost.setDefault();
-
-  remoteHost.onChange.remove(remoteHostReCheck);
-
-  is(hideIntroEnabled.value, hideIntroEnabledDefault, "hideIntroEnabled reset");
-  is(tabSize.value, tabSizeDefault, "tabSize reset");
-  is(remoteHost.value, remoteHostDefault, "remoteHost reset");
-
-  // Cleanup
-  prefBranch.setBoolPref("devtools.gcli.hideIntro", hideIntroOrig);
-  prefBranch.setIntPref("devtools.editor.tabsize", tabSizeOrig);
-  prefBranch.setStringPref("devtools.debugger.remote-host", remoteHostOrig);
-
-  yield helpers.closeTab(options);
-}
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_async.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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_async.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsslo",
-      check: {
-        input:  "tsslo",
-        hints:       "w",
-        markup: "IIIII",
-        cursor: 5,
-        current: "__command",
-        status: "ERROR",
-        predictions: ["tsslow"],
-        unassigned: [ ]
-      }
-    },
-    {
-      setup:    "tsslo<TAB>",
-      check: {
-        input:  "tsslow ",
-        hints:         "Shalom",
-        markup: "VVVVVVV",
-        cursor: 7,
-        current: "hello",
-        status: "ERROR",
-        predictions: [
-          "Shalom", "Namast\u{00E9}", "Hallo", "Dydd-da", "Ch\u{00E0}o", "Hej",
-          "Saluton", "Sawubona"
-        ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsslow" },
-          hello: {
-            arg: "",
-            status: "INCOMPLETE"
-          },
-        }
-      }
-    },
-    {
-      setup:    "tsslow S",
-      check: {
-        input:  "tsslow S",
-        hints:          "halom",
-        markup: "VVVVVVVI",
-        cursor: 8,
-        current: "hello",
-        status: "ERROR",
-        predictions: [ "Shalom", "Saluton", "Sawubona", "Namast\u{00E9}" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsslow" },
-          hello: {
-            arg: " S",
-            status: "INCOMPLETE"
-          },
-        }
-      }
-    },
-    {
-      setup:    "tsslow S<TAB>",
-      check: {
-        input:  "tsslow Shalom ",
-        hints:                "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "hello",
-        status: "VALID",
-        predictions: [ "Shalom" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsslow" },
-          hello: {
-            arg: " Shalom ",
-            status: "VALID",
-            message: ""
-          },
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_canon.js
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * 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");
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_cli1.js
+++ /dev/null
@@ -1,528 +0,0 @@
-/*
- * 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_cli1.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.testBlank = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "",
-      check: {
-        input:  "",
-        hints:  "",
-        markup: "",
-        cursor: 0,
-        current: "__command",
-        status: "ERROR"
-      },
-      post: function () {
-        assert.is(options.requisition.commandAssignment.value, undefined);
-      }
-    },
-    {
-      setup:    " ",
-      check: {
-        input:  " ",
-        hints:   "",
-        markup: "V",
-        cursor: 1,
-        current: "__command",
-        status: "ERROR"
-      },
-      post: function () {
-        assert.is(options.requisition.commandAssignment.value, undefined);
-      }
-    },
-    {
-      name: "| ",
-      setup: function () {
-        return helpers.setInput(options, " ", 0);
-      },
-      check: {
-        input:  " ",
-        hints:   "",
-        markup: "V",
-        cursor: 0,
-        current: "__command",
-        status: "ERROR"
-      },
-      post: function () {
-        assert.is(options.requisition.commandAssignment.value, undefined);
-      }
-    }
-  ]);
-};
-
-exports.testDelete = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "x<BACKSPACE>",
-      check: {
-        input:  "",
-        hints:  "",
-        markup: "",
-        cursor: 0,
-        current: "__command",
-        status: "ERROR"
-      },
-      post: function () {
-        assert.is(options.requisition.commandAssignment.value, undefined);
-      }
-    }
-  ]);
-};
-
-exports.testIncompleteMultiMatch = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsn ex",
-      check: {
-        input:  "tsn ex",
-        hints:        "t",
-        markup: "IIIVII",
-        cursor: 6,
-        current: "__command",
-        status: "ERROR",
-        predictionsContains: [
-          "tsn ext", "tsn exte", "tsn exten", "tsn extend"
-        ]
-      }
-    }
-  ]);
-};
-
-exports.testIncompleteSingleMatch = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tselar",
-      check: {
-        input:  "tselar",
-        hints:        "r",
-        markup: "IIIIII",
-        cursor: 6,
-        current: "__command",
-        status: "ERROR",
-        predictions: [ "tselarr" ],
-        unassigned: [ ]
-      }
-    }
-  ]);
-};
-
-exports.testTsv = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsv",
-      check: {
-        input:  "tsv",
-        hints:     " <optionType> <optionValue>",
-        markup: "VVV",
-        cursor: 3,
-        current: "__command",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsv" },
-          optionType: { arg: "", status: "INCOMPLETE" },
-          optionValue: { arg: "", status: "INCOMPLETE" }
-        }
-      }
-    },
-    {
-      setup:    "tsv ",
-      check: {
-        input:  "tsv ",
-        hints:      "option1 <optionValue>",
-        markup: "VVVV",
-        cursor: 4,
-        current: "optionType",
-        status: "ERROR",
-        predictions: [ "option1", "option2", "option3" ],
-        unassigned: [ ],
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tsv" },
-          optionType: { arg: "", status: "INCOMPLETE" },
-          optionValue: { arg: "", status: "INCOMPLETE" }
-        }
-      }
-    },
-    {
-      name: "ts|v",
-      setup: function () {
-        return helpers.setInput(options, "tsv ", 2);
-      },
-      check: {
-        input:  "tsv ",
-        hints:      "<optionType> <optionValue>",
-        markup: "VVVV",
-        cursor: 2,
-        current: "__command",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsv" },
-          optionType: { arg: "", status: "INCOMPLETE" },
-          optionValue: { arg: "", status: "INCOMPLETE" }
-        }
-      }
-    },
-    {
-      setup:    "tsv o",
-      check: {
-        input:  "tsv o",
-        hints:       "ption1 <optionValue>",
-        markup: "VVVVI",
-        cursor: 5,
-        current: "optionType",
-        status: "ERROR",
-        predictions: [ "option1", "option2", "option3" ],
-        unassigned: [ ],
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: undefined,
-            arg: " o",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionType\u2019."
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsv option",
-      check: {
-        input:  "tsv option",
-        hints:            "1 <optionValue>",
-        markup: "VVVVIIIIII",
-        cursor: 10,
-        current: "optionType",
-        status: "ERROR",
-        predictions: [ "option1", "option2", "option3" ],
-        unassigned: [ ],
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: undefined,
-            arg: " option",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionType\u2019."
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    },
-    {
-      name: "|tsv option",
-      setup: function () {
-        return helpers.setInput(options, "tsv option", 0);
-      },
-      check: {
-        input:  "tsv option",
-        hints:            " <optionValue>",
-        markup: "VVVVEEEEEE",
-        cursor: 0,
-        current: "__command",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: undefined,
-            arg: " option",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionType\u2019."
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsv option ",
-      check: {
-        input:  "tsv option ",
-        hints:             "<optionValue>",
-        markup: "VVVVEEEEEEV",
-        cursor: 11,
-        current: "optionValue",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        tooltipState: "false:default",
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: undefined,
-            arg: " option ",
-            status: "ERROR",
-            message: "Can\u2019t use \u2018option\u2019."
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsv option1",
-      check: {
-        input:  "tsv option1",
-        hints:             " <optionValue>",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "optionType",
-        status: "ERROR",
-        predictions: [ "option1" ],
-        unassigned: [ ],
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: "string",
-            arg: " option1",
-            status: "VALID",
-            message: ""
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsv option1 ",
-      check: {
-        input:  "tsv option1 ",
-        hints:              "<optionValue>",
-        markup: "VVVVVVVVVVVV",
-        cursor: 12,
-        current: "optionValue",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: "string",
-            arg: " option1 ",
-            status: "VALID",
-            message: ""
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsv option2",
-      check: {
-        input:  "tsv option2",
-        hints:             " <optionValue>",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "optionType",
-        status: "ERROR",
-        predictions: [ "option2" ],
-        unassigned: [ ],
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: "number",
-            arg: " option2",
-            status: "VALID",
-            message: ""
-          },
-          optionValue: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for \u2018optionValue\u2019."
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testTsvValues = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsv option1 6",
-      check: {
-        input:  "tsv option1 6",
-        hints:               "",
-        markup: "VVVVVVVVVVVVV",
-        cursor: 13,
-        current: "optionValue",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: "string",
-            arg: " option1",
-            status: "VALID",
-            message: ""
-          },
-          optionValue: {
-            arg: " 6",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsv option2 6",
-      check: {
-        input:  "tsv option2 6",
-        hints:               "",
-        markup: "VVVVVVVVVVVVV",
-        cursor: 13,
-        current: "optionValue",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsv" },
-          optionType: {
-            value: "number",
-            arg: " option2",
-            status: "VALID",
-            message: ""
-          },
-          optionValue: {
-            arg: " 6",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    // Delegated remote types can't transfer value types so we only test for
-    // the value of 'value' when we're local
-    {
-      skipIf: options.isRemote,
-      setup: "tsv option1 6",
-      check: {
-        args: {
-          optionValue: { value: "6" }
-        }
-      }
-    },
-    {
-      skipIf: options.isRemote,
-      setup: "tsv option2 6",
-      check: {
-        args: {
-          optionValue: { value: 6 }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testInvalid = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "zxjq",
-      check: {
-        input:  "zxjq",
-        hints:      "",
-        markup: "EEEE",
-        cursor: 4,
-        current: "__command",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        tooltipState: "true:isError"
-      }
-    },
-    {
-      setup:    "zxjq ",
-      check: {
-        input:  "zxjq ",
-        hints:       "",
-        markup: "EEEEV",
-        cursor: 5,
-        current: "__command",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        tooltipState: "true:isError"
-      }
-    },
-    {
-      setup:    "zxjq one",
-      check: {
-        input:  "zxjq one",
-        hints:          "",
-        markup: "EEEEVEEE",
-        cursor: 8,
-        current: "__unassigned",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ " one" ],
-        tooltipState: "true:isError"
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_cli2.js
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- * 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" },
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_completion1.js
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * 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_completion1.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testActivate = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "",
-      check: {
-        hints: ""
-      }
-    },
-    {
-      setup: " ",
-      check: {
-        hints: ""
-      }
-    },
-    {
-      setup: "tsr",
-      check: {
-        hints: " <text>"
-      }
-    },
-    {
-      setup: "tsr ",
-      check: {
-        hints: "<text>"
-      }
-    },
-    {
-      setup: "tsr b",
-      check: {
-        hints: ""
-      }
-    },
-    {
-      setup: "tsb",
-      check: {
-        hints: " [toggle]"
-      }
-    },
-    {
-      setup: "tsm",
-      check: {
-        hints: " <abc> <txt> <num>"
-      }
-    },
-    {
-      setup: "tsm ",
-      check: {
-        hints: "a <txt> <num>"
-      }
-    },
-    {
-      setup: "tsm a",
-      check: {
-        hints: " <txt> <num>"
-      }
-    },
-    {
-      setup: "tsm a ",
-      check: {
-        hints: "<txt> <num>"
-      }
-    },
-    {
-      setup: "tsm a  ",
-      check: {
-        hints: "<txt> <num>"
-      }
-    },
-    {
-      setup: "tsm a  d",
-      check: {
-        hints: " <num>"
-      }
-    },
-    {
-      setup: 'tsm a "d d"',
-      check: {
-        hints: " <num>"
-      }
-    },
-    {
-      setup: 'tsm a "d ',
-      check: {
-        hints: " <num>"
-      }
-    },
-    {
-      setup: 'tsm a "d d" ',
-      check: {
-        hints: "<num>"
-      }
-    },
-    {
-      setup: 'tsm a "d d ',
-      check: {
-        hints: " <num>"
-      }
-    },
-    {
-      setup: "tsm d r",
-      check: {
-        hints: " <num>"
-      }
-    },
-    {
-      setup: "tsm a d ",
-      check: {
-        hints: "<num>"
-      }
-    },
-    {
-      setup: "tsm a d 4",
-      check: {
-        hints: ""
-      }
-    },
-    {
-      setup: "tsg",
-      check: {
-        hints: " <solo> [options]"
-      }
-    },
-    {
-      setup: "tsg ",
-      check: {
-        hints: "aaa [options]"
-      }
-    },
-    {
-      setup: "tsg a",
-      check: {
-        hints: "aa [options]"
-      }
-    },
-    {
-      setup: "tsg b",
-      check: {
-        hints: "bb [options]"
-      }
-    },
-    {
-      skipIf: options.isPhantomjs, // PhantomJS gets predictions wrong
-      setup: "tsg d",
-      check: {
-        hints: " [options] -> ccc"
-      }
-    },
-    {
-      setup: "tsg aa",
-      check: {
-        hints: "a [options]"
-      }
-    },
-    {
-      setup: "tsg aaa",
-      check: {
-        hints: " [options]"
-      }
-    },
-    {
-      setup: "tsg aaa ",
-      check: {
-        hints: "[options]"
-      }
-    },
-    {
-      setup: "tsg aaa d",
-      check: {
-        hints: " [options]"
-      }
-    },
-    {
-      setup: "tsg aaa dddddd",
-      check: {
-        hints: " [options]"
-      }
-    },
-    {
-      setup: "tsg aaa dddddd ",
-      check: {
-        hints: "[options]"
-      }
-    },
-    {
-      setup: 'tsg aaa "d',
-      check: {
-        hints: " [options]"
-      }
-    },
-    {
-      setup: 'tsg aaa "d d',
-      check: {
-        hints: " [options]"
-      }
-    },
-    {
-      setup: 'tsg aaa "d d"',
-      check: {
-        hints: " [options]"
-      }
-    },
-    {
-      setup: "tsn ex ",
-      check: {
-        hints: ""
-      }
-    },
-    {
-      setup: "selarr",
-      check: {
-        hints: " -> tselarr"
-      }
-    },
-    {
-      setup: "tselar 1",
-      check: {
-        hints: ""
-      }
-    },
-    {
-      name: "tselar |1",
-      setup: function () {
-        return helpers.setInput(options, "tselar 1", 7);
-      },
-      check: {
-        hints: ""
-      }
-    },
-    {
-      name: "tselar| 1",
-      setup: function () {
-        return helpers.setInput(options, "tselar 1", 6);
-      },
-      check: {
-        hints: " -> tselarr"
-      }
-    },
-    {
-      name: "tsela|r 1",
-      setup: function () {
-        return helpers.setInput(options, "tselar 1", 5);
-      },
-      check: {
-        hints: " -> tselarr"
-      }
-    },
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_completion2.js
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * 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_completion2.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testLong = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tslong --sel",
-      check: {
-        input:  "tslong --sel",
-        hints:              " <selection> <msg> [options]",
-        markup: "VVVVVVVIIIII"
-      }
-    },
-    {
-      setup:    "tslong --sel<TAB>",
-      check: {
-        input:  "tslong --sel ",
-        hints:               "space <msg> [options]",
-        markup: "VVVVVVVIIIIIV"
-      }
-    },
-    {
-      setup:    "tslong --sel ",
-      check: {
-        input:  "tslong --sel ",
-        hints:               "space <msg> [options]",
-        markup: "VVVVVVVIIIIIV"
-      }
-    },
-    {
-      setup:    "tslong --sel s",
-      check: {
-        input:  "tslong --sel s",
-        hints:                "pace <msg> [options]",
-        markup: "VVVVVVVIIIIIVI"
-      }
-    },
-    {
-      setup:    "tslong --num ",
-      check: {
-        input:  "tslong --num ",
-        hints:               "<number> <msg> [options]",
-        markup: "VVVVVVVIIIIIV"
-      }
-    },
-    {
-      setup:    "tslong --num 42",
-      check: {
-        input:  "tslong --num 42",
-        hints:                 " <msg> [options]",
-        markup: "VVVVVVVVVVVVVVV"
-      }
-    },
-    {
-      setup:    "tslong --num 42 ",
-      check: {
-        input:  "tslong --num 42 ",
-        hints:                  "<msg> [options]",
-        markup: "VVVVVVVVVVVVVVVV"
-      }
-    },
-    {
-      setup:    "tslong --num 42 --se",
-      check: {
-        input:  "tslong --num 42 --se",
-        hints:                      "l <msg> [options]",
-        markup: "VVVVVVVVVVVVVVVVIIII"
-      }
-    },
-    {
-      setup:    "tslong --num 42 --se<TAB>",
-      check: {
-        input:  "tslong --num 42 --sel ",
-        hints:                        "space <msg> [options]",
-        markup: "VVVVVVVVVVVVVVVVIIIIIV"
-      }
-    },
-    {
-      setup:    "tslong --num 42 --se<TAB><TAB>",
-      check: {
-        input:  "tslong --num 42 --sel space ",
-        hints:                              "<msg> [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV"
-      }
-    },
-    {
-      setup:    "tslong --num 42 --sel ",
-      check: {
-        input:  "tslong --num 42 --sel ",
-        hints:                        "space <msg> [options]",
-        markup: "VVVVVVVVVVVVVVVVIIIIIV"
-      }
-    },
-    {
-      setup:    "tslong --num 42 --sel space ",
-      check: {
-        input:  "tslong --num 42 --sel space ",
-        hints:                              "<msg> [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV"
-      }
-    }
-  ]);
-};
-
-exports.testNoTab = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tss<TAB>",
-      check: {
-        input:  "tss ",
-        markup: "VVVV",
-        hints: ""
-      }
-    },
-    {
-      setup:    "tss<TAB><TAB>",
-      check: {
-        input:  "tss ",
-        markup: "VVVV",
-        hints: ""
-      }
-    },
-    {
-      setup:    "xxxx",
-      check: {
-        input:  "xxxx",
-        markup: "EEEE",
-        hints: ""
-      }
-    },
-    {
-      name: "<TAB>",
-      setup: function () {
-        // Doing it this way avoids clearing the input buffer
-        return helpers.pressTab(options);
-      },
-      check: {
-        input:  "xxxx",
-        markup: "EEEE",
-        hints: ""
-      }
-    }
-  ]);
-};
-
-exports.testOutstanding = function (options) {
-  // See bug 779800
-  /*
-  return helpers.audit(options, [
-    {
-      setup:    'tsg --txt1 ddd ',
-      check: {
-        input:  'tsg --txt1 ddd ',
-        hints:                 'aaa [options]',
-        markup: 'VVVVVVVVVVVVVVV'
-      }
-    },
-  ]);
-  */
-};
-
-exports.testCompleteIntoOptional = function (options) {
-  // From bug 779816
-  return helpers.audit(options, [
-    {
-      setup:    "tso ",
-      check: {
-        typed:  "tso ",
-        hints:      "[text]",
-        markup: "VVVV",
-        status: "VALID"
-      }
-    },
-    {
-      setup:    "tso<TAB>",
-      check: {
-        typed:  "tso ",
-        hints:      "[text]",
-        markup: "VVVV",
-        status: "VALID"
-      }
-    }
-  ]);
-};
-
-exports.testSpaceComplete = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tslong --sel2 wit",
-      check: {
-        input:  "tslong --sel2 wit",
-        hints:                   "h space <msg> [options]",
-        markup: "VVVVVVVIIIIIIVIII",
-        cursor: 17,
-        current: "sel2",
-        status: "ERROR",
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tslong" },
-          msg: { status: "INCOMPLETE" },
-          num: { status: "VALID" },
-          sel: { status: "VALID" },
-          bool: { value: false, status: "VALID" },
-          num2: { status: "VALID" },
-          bool2: { value: false, status: "VALID" },
-          sel2: { arg: " --sel2 wit", status: "INCOMPLETE" }
-        }
-      }
-    },
-    {
-      setup:    "tslong --sel2 wit<TAB>",
-      check: {
-        input:  "tslong --sel2 'with space' ",
-        hints:                             "<msg> [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 27,
-        current: "sel2",
-        status: "ERROR",
-        tooltipState: "true:importantFieldFlag",
-        args: {
-          command: { name: "tslong" },
-          msg: { status: "INCOMPLETE" },
-          num: { status: "VALID" },
-          sel: { status: "VALID" },
-          bool: { value: false, status: "VALID" },
-          num2: { status: "VALID" },
-          bool2: { value: false, status: "VALID" },
-          sel2: {
-            value: "with space",
-            arg: " --sel2 'with space' ",
-            status: "VALID"
-          }
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_context.js
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * 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_context.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testBaseline = function (options) {
-  return helpers.audit(options, [
-    // These 3 establish a baseline for comparison when we have used the
-    // context command
-    {
-      setup:    "ext",
-      check: {
-        input:  "ext",
-        hints:     " -> context",
-        markup: "III",
-        message: "",
-        predictions: [ "context", "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
-        unassigned: [ ],
-      }
-    },
-    {
-      setup:    "ext test",
-      check: {
-        input:  "ext test",
-        hints:          "",
-        markup: "IIIVEEEE",
-        status: "ERROR",
-        message: "Too many arguments",
-        unassigned: [ " test" ],
-      }
-    },
-    {
-      setup:    "tsn",
-      check: {
-        input:  "tsn",
-        hints:     " deep down nested cmd",
-        markup: "III",
-        cursor: 3,
-        current: "__command",
-        status: "ERROR",
-        predictionsContains: [ "tsn deep down nested cmd", "tsn ext", "tsn exte" ],
-        args: {
-          command: { name: "tsn" },
-        }
-      }
-    }
-  ]);
-};
-
-exports.testContext = function (options) {
-  return helpers.audit(options, [
-    // Use the 'tsn' context
-    {
-      setup:    "context tsn",
-      check: {
-        input:  "context tsn",
-        hints:             " deep down nested cmd",
-        markup: "VVVVVVVVVVV",
-        message: "",
-        predictionsContains: [ "tsn deep down nested cmd", "tsn ext", "tsn exte" ],
-        args: {
-          command: { name: "context" },
-          prefix: {
-            value: options.requisition.system.commands.get("tsn"),
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "Using tsn as a command prefix"
-      }
-    },
-    // For comparison with earlier
-    {
-      setup:    "ext",
-      check: {
-        input:  "ext",
-        hints:     " <text>",
-        markup: "VVV",
-        predictions: [ "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
-        args: {
-          command: { name: "tsn ext" },
-          text: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "ext test",
-      check: {
-        input:  "ext test",
-        hints:          "",
-        markup: "VVVVVVVV",
-        args: {
-          command: { name: "tsn ext" },
-          text: {
-            value: "test",
-            arg: " test",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "Exec: tsnExt text=test"
-      }
-    },
-    {
-      setup:    "tsn",
-      check: {
-        input:  "tsn",
-        hints:     " deep down nested cmd",
-        markup: "III",
-        message: "",
-        predictionsContains: [ "tsn deep down nested cmd", "tsn ext", "tsn exte" ],
-        args: {
-          command: { name: "tsn" },
-        }
-      }
-    },
-    // Does it actually work?
-    {
-      setup:    "tsb true",
-      check: {
-        input:  "tsb true",
-        hints:          "",
-        markup: "VVVVVVVV",
-        options: [ "true" ],
-        message: "",
-        predictions: [ "true" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tsb" },
-          toggle: { value: true, arg: " true", status: "VALID", message: "" }
-        }
-      }
-    },
-    {
-      // Bug 866710 - GCLI should allow argument merging for non-string parameters
-      setup: "context tsn ext",
-      skip: true
-    },
-    {
-      setup:    'context "tsn ext"',
-      check: {
-        input:  'context "tsn ext"',
-        hints:                   "",
-        markup: "VVVVVVVVVVVVVVVVV",
-        message: "",
-        predictions: [ "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "context" },
-          prefix: {
-            value: options.requisition.system.commands.get("tsn ext"),
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "Can't use 'tsn ext' as a prefix because it is not a parent command.",
-        error: true
-      }
-    },
-    /*
-    {
-      setup:    'context "tsn deep"',
-      check: {
-        input:  'context "tsn deep"',
-        hints:                    '',
-        markup: 'VVVVVVVVVVVVVVVVVV',
-        status: 'ERROR',
-        message: '',
-        predictions: [ 'tsn deep' ],
-        unassigned: [ ],
-        args: {
-          command: { name: 'context' },
-          prefix: {
-            value: options.requisition.system.commands.get('tsn deep'),
-            status: 'VALID',
-            message: ''
-          }
-        }
-      },
-      exec: {
-        output: ''
-      }
-    },
-    */
-    {
-      setup:    "context",
-      check: {
-        input:  "context",
-        hints:         " [prefix]",
-        markup: "VVVVVVV",
-        status: "VALID",
-        unassigned: [ ],
-        args: {
-          command: { name: "context" },
-          prefix: { value: undefined, arg: "", status: "VALID", message: "" },
-        }
-      },
-      exec: {
-        output: "Command prefix is unset",
-        type: "string",
-        error: false
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_date.js
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * 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_date.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-var Status = require("gcli/types/types").Status;
-
-exports.testParse = function (options) {
-  var date = options.requisition.system.types.createType("date");
-  return date.parseString("now").then(function (conversion) {
-    // Date comparison - these 2 dates may not be the same, but how close is
-    // close enough? If this test takes more than 30secs to run the it will
-    // probably time out, so we'll assume that these 2 values must be within
-    // 1 min of each other
-    var gap = new Date().getTime() - conversion.value.getTime();
-    assert.ok(gap < 60000, "now is less than a minute away");
-
-    assert.is(conversion.getStatus(), Status.VALID, "now parse");
-  });
-};
-
-exports.testMaxMin = function (options) {
-  var max = new Date();
-  var min = new Date();
-  var types = options.requisition.system.types;
-  var date = types.createType({ name: "date", max: max, min: min });
-  assert.is(date.getMax(), max, "max setup");
-
-  var incremented = date.nudge(min, 1);
-  assert.is(incremented, max, "incremented");
-};
-
-exports.testIncrement = function (options) {
-  var date = options.requisition.system.types.createType("date");
-  return date.parseString("now").then(function (conversion) {
-    var plusOne = date.nudge(conversion.value, 1);
-    var minusOne = date.nudge(plusOne, -1);
-
-    // See comments in testParse
-    var gap = new Date().getTime() - minusOne.getTime();
-    assert.ok(gap < 60000, "now is less than a minute away");
-  });
-};
-
-exports.testInput = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsdate 2001-01-01 1980-01-03",
-      check: {
-        input:  "tsdate 2001-01-01 1980-01-03",
-        hints:                              "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              assert.is(d1.getFullYear(), 2001, "d1 year");
-              assert.is(d1.getMonth(), 0, "d1 month");
-              assert.is(d1.getDate(), 1, "d1 date");
-              assert.is(d1.getHours(), 0, "d1 hours");
-              assert.is(d1.getMinutes(), 0, "d1 minutes");
-              assert.is(d1.getSeconds(), 0, "d1 seconds");
-              assert.is(d1.getMilliseconds(), 0, "d1 millis");
-            },
-            arg: " 2001-01-01",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: function (d2) {
-              assert.is(d2.getFullYear(), 1980, "d2 year");
-              assert.is(d2.getMonth(), 0, "d2 month");
-              assert.is(d2.getDate(), 3, "d2 date");
-              assert.is(d2.getHours(), 0, "d2 hours");
-              assert.is(d2.getMinutes(), 0, "d2 minutes");
-              assert.is(d2.getSeconds(), 0, "d2 seconds");
-              assert.is(d2.getMilliseconds(), 0, "d2 millis");
-            },
-            arg: " 1980-01-03",
-            status: "VALID",
-            message: ""
-          },
-        }
-      },
-      exec: {
-        output: [ /^Exec: tsdate/, /2001/, /1980/ ],
-        type: "testCommandOutput",
-        error: false
-      }
-    },
-    {
-      setup:    "tsdate 2001/01/01 1980/01/03",
-      check: {
-        input:  "tsdate 2001/01/01 1980/01/03",
-        hints:                              "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              assert.is(d1.getFullYear(), 2001, "d1 year");
-              assert.is(d1.getMonth(), 0, "d1 month");
-              assert.is(d1.getDate(), 1, "d1 date");
-              assert.is(d1.getHours(), 0, "d1 hours");
-              assert.is(d1.getMinutes(), 0, "d1 minutes");
-              assert.is(d1.getSeconds(), 0, "d1 seconds");
-              assert.is(d1.getMilliseconds(), 0, "d1 millis");
-            },
-            arg: " 2001/01/01",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: function (d2) {
-              assert.is(d2.getFullYear(), 1980, "d2 year");
-              assert.is(d2.getMonth(), 0, "d2 month");
-              assert.is(d2.getDate(), 3, "d2 date");
-              assert.is(d2.getHours(), 0, "d2 hours");
-              assert.is(d2.getMinutes(), 0, "d2 minutes");
-              assert.is(d2.getSeconds(), 0, "d2 seconds");
-              assert.is(d2.getMilliseconds(), 0, "d2 millis");
-            },
-            arg: " 1980/01/03",
-            status: "VALID",
-            message: ""
-          },
-        }
-      },
-      exec: {
-        output: [ /^Exec: tsdate/, /2001/, /1980/ ],
-        type: "testCommandOutput",
-        error: false
-      }
-    },
-    {
-      setup:    "tsdate now today",
-      check: {
-        input:  "tsdate now today",
-        hints:                  "",
-        markup: "VVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              // How long should we allow between d1 and now? Mochitest will
-              // time out after 30 secs, so that seems like a decent upper
-              // limit, although 30 ms should probably do it. I don't think
-              // reducing the limit from 30 secs will find any extra bugs
-              assert.ok(d1.getTime() - new Date().getTime() < 30 * 1000,
-                        "d1 time");
-            },
-            arg: " now",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: function (d2) {
-              // See comment for d1 above
-              assert.ok(d2.getTime() - new Date().getTime() < 30 * 1000,
-                        "d2 time");
-            },
-            arg: " today",
-            status: "VALID",
-            message: ""
-          },
-        }
-      },
-      exec: {
-        output: [ /^Exec: tsdate/, new Date().getFullYear() ],
-        type: "testCommandOutput",
-        error: false
-      }
-    },
-    {
-      setup:    "tsdate yesterday tomorrow",
-      check: {
-        input:  "tsdate yesterday tomorrow",
-        hints:                           "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              var compare = new Date().getTime() - (24 * 60 * 60 * 1000);
-              // See comment for d1 in the test for 'tsdate now today'
-              assert.ok(d1.getTime() - compare < 30 * 1000,
-                        "d1 time");
-            },
-            arg: " yesterday",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: function (d2) {
-              var compare = new Date().getTime() + (24 * 60 * 60 * 1000);
-              // See comment for d1 in the test for 'tsdate now today'
-              assert.ok(d2.getTime() - compare < 30 * 1000,
-                        "d2 time");
-            },
-            arg: " tomorrow",
-            status: "VALID",
-            message: ""
-          },
-        }
-      },
-      exec: {
-        output: [ /^Exec: tsdate/, new Date().getFullYear() ],
-        type: "testCommandOutput",
-        error: false
-      }
-    }
-  ]);
-};
-
-exports.testIncrDecr = function (options) {
-  return helpers.audit(options, [
-    {
-      // createRequisitionAutomator doesn't fake UP/DOWN well enough
-      skipRemainingIf: options.isNode,
-      setup:    "tsdate 2001-01-01<UP>",
-      check: {
-        input:  "tsdate 2001-01-02",
-        hints:                    " <d2>",
-        markup: "VVVVVVVVVVVVVVVVV",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              assert.is(d1.getFullYear(), 2001, "d1 year");
-              assert.is(d1.getMonth(), 0, "d1 month");
-              assert.is(d1.getDate(), 2, "d1 date");
-              assert.is(d1.getHours(), 0, "d1 hours");
-              assert.is(d1.getMinutes(), 0, "d1 minutes");
-              assert.is(d1.getSeconds(), 0, "d1 seconds");
-              assert.is(d1.getMilliseconds(), 0, "d1 millis");
-            },
-            arg: " 2001-01-02",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: undefined,
-            status: "INCOMPLETE"
-          },
-        }
-      }
-    },
-    {
-      // Check wrapping on decrement
-      setup:    "tsdate 2001-02-01<DOWN>",
-      check: {
-        input:  "tsdate 2001-01-31",
-        hints:                    " <d2>",
-        markup: "VVVVVVVVVVVVVVVVV",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              assert.is(d1.getFullYear(), 2001, "d1 year");
-              assert.is(d1.getMonth(), 0, "d1 month");
-              assert.is(d1.getDate(), 31, "d1 date");
-              assert.is(d1.getHours(), 0, "d1 hours");
-              assert.is(d1.getMinutes(), 0, "d1 minutes");
-              assert.is(d1.getSeconds(), 0, "d1 seconds");
-              assert.is(d1.getMilliseconds(), 0, "d1 millis");
-            },
-            arg: " 2001-01-31",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: undefined,
-            status: "INCOMPLETE"
-          },
-        }
-      }
-    },
-    {
-      // Check 'max' value capping on increment
-      setup:    'tsdate 2001-02-01 "27 feb 2000"<UP>',
-      check: {
-        input:  'tsdate 2001-02-01 "2000-02-28"',
-        hints:                                "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsdate" },
-          d1: {
-            value: function (d1) {
-              assert.is(d1.getFullYear(), 2001, "d1 year");
-              assert.is(d1.getMonth(), 1, "d1 month");
-              assert.is(d1.getDate(), 1, "d1 date");
-              assert.is(d1.getHours(), 0, "d1 hours");
-              assert.is(d1.getMinutes(), 0, "d1 minutes");
-              assert.is(d1.getSeconds(), 0, "d1 seconds");
-              assert.is(d1.getMilliseconds(), 0, "d1 millis");
-            },
-            arg: " 2001-02-01",
-            status: "VALID",
-            message: ""
-          },
-          d2: {
-            value: function (d2) {
-              assert.is(d2.getFullYear(), 2000, "d2 year");
-              assert.is(d2.getMonth(), 1, "d2 month");
-              assert.is(d2.getDate(), 28, "d2 date");
-              assert.is(d2.getHours(), 0, "d2 hours");
-              assert.is(d2.getMinutes(), 0, "d2 minutes");
-              assert.is(d2.getSeconds(), 0, "d2 seconds");
-              assert.is(d2.getMilliseconds(), 0, "d2 millis");
-            },
-            arg: ' "2000-02-28"',
-            status: "VALID",
-            message: ""
-          },
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_exec.js
+++ /dev/null
@@ -1,656 +0,0 @@
-/*
- * 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");
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_fail.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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_fail.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "tsfail reject",
-      exec: {
-        output: "rejected promise",
-        type: "error",
-        error: true
-      }
-    },
-    {
-      setup: "tsfail rejecttyped",
-      exec: {
-        output: "54",
-        type: "number",
-        error: true
-      }
-    },
-    {
-      setup: "tsfail throwerror",
-      exec: {
-        output: /thrown error$/,
-        type: "error",
-        error: true
-      }
-    },
-    {
-      setup: "tsfail throwstring",
-      exec: {
-        output: "thrown string",
-        type: "error",
-        error: true
-      }
-    },
-    {
-      setup: "tsfail noerror",
-      exec: {
-        output: "no error",
-        type: "string",
-        error: false
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_file.js
+++ /dev/null
@@ -1,821 +0,0 @@
-/*
- * 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_file.js");
-}
-
-// var helpers = require('./helpers');
-
-var local = false;
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.isFirefox, // No file implementation in Firefox
-      setup:    "tsfile open /",
-      check: {
-        input:  "tsfile open /",
-        hints:               "",
-        markup: "VVVVVVVVVVVVI",
-        cursor: 13,
-        current: "p1",
-        status: "ERROR",
-        message: "'/' is not a file",
-        args: {
-          command: { name: "tsfile open" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' is not a file"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile open /zxcv",
-      check: {
-        input:  "tsfile open /zxcv",
-        // hints:                   ' -> /etc/',
-        markup: "VVVVVVVVVVVVIIIII",
-        cursor: 17,
-        current: "p1",
-        status: "ERROR",
-        message: "'/zxcv' doesn't exist",
-        args: {
-          command: { name: "tsfile open" },
-          p1: {
-            value: undefined,
-            arg: " /zxcv",
-            status: "INCOMPLETE",
-            message: "'/zxcv' doesn't exist"
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile open /mach_kernel",
-      check: {
-        input:  "tsfile open /mach_kernel",
-        hints:                          "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 24,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile open" },
-          p1: {
-            value: "/mach_kernel",
-            arg: " /mach_kernel",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile saveas /",
-      check: {
-        input:  "tsfile saveas /",
-        hints:                 "",
-        markup: "VVVVVVVVVVVVVVI",
-        cursor: 15,
-        current: "p1",
-        status: "ERROR",
-        message: "'/' already exists",
-        args: {
-          command: { name: "tsfile saveas" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' already exists"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile saveas /zxcv",
-      check: {
-        input:  "tsfile saveas /zxcv",
-        // hints:                     ' -> /etc/',
-        markup: "VVVVVVVVVVVVVVVVVVV",
-        cursor: 19,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile saveas" },
-          p1: {
-            value: "/zxcv",
-            arg: " /zxcv",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile saveas /mach_kernel",
-      check: {
-        input:  "tsfile saveas /mach_kernel",
-        hints:                            "",
-        markup: "VVVVVVVVVVVVVVIIIIIIIIIIII",
-        cursor: 26,
-        current: "p1",
-        status: "ERROR",
-        message: "'/mach_kernel' already exists",
-        args: {
-          command: { name: "tsfile saveas" },
-          p1: {
-            value: undefined,
-            arg: " /mach_kernel",
-            status: "INCOMPLETE",
-            message: "'/mach_kernel' already exists"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile save /",
-      check: {
-        input:  "tsfile save /",
-        hints:               "",
-        markup: "VVVVVVVVVVVVI",
-        cursor: 13,
-        current: "p1",
-        status: "ERROR",
-        message: "'/' is not a file",
-        args: {
-          command: { name: "tsfile save" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' is not a file"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile save /zxcv",
-      check: {
-        input:  "tsfile save /zxcv",
-        // hints:                   ' -> /etc/',
-        markup: "VVVVVVVVVVVVVVVVV",
-        cursor: 17,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile save" },
-          p1: {
-            value: "/zxcv",
-            arg: " /zxcv",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile save /mach_kernel",
-      check: {
-        input:  "tsfile save /mach_kernel",
-        hints:                          "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 24,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile save" },
-          p1: {
-            value: "/mach_kernel",
-            arg: " /mach_kernel",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile cd /",
-      check: {
-        input:  "tsfile cd /",
-        hints:             "",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile cd" },
-          p1: {
-            value: "/",
-            arg: " /",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile cd /zxcv",
-      check: {
-        input:  "tsfile cd /zxcv",
-        // hints:                 ' -> /dev/',
-        markup: "VVVVVVVVVVIIIII",
-        cursor: 15,
-        current: "p1",
-        status: "ERROR",
-        message: "'/zxcv' doesn't exist",
-        args: {
-          command: { name: "tsfile cd" },
-          p1: {
-            value: undefined,
-            arg: " /zxcv",
-            status: "INCOMPLETE",
-            message: "'/zxcv' doesn't exist"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true || !local,
-      setup:    "tsfile cd /etc/passwd",
-      check: {
-        input:  "tsfile cd /etc/passwd",
-        hints:                       " -> /etc/pam.d/",
-        markup: "VVVVVVVVVVIIIIIIIIIII",
-        cursor: 21,
-        current: "p1",
-        status: "ERROR",
-        message: "'/etc/passwd' is not a directory",
-        args: {
-          command: { name: "tsfile cd" },
-          p1: {
-            value: undefined,
-            arg: " /etc/passwd",
-            status: "INCOMPLETE",
-            message: "'/etc/passwd' is not a directory"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile mkdir /",
-      check: {
-        input:  "tsfile mkdir /",
-        hints:                "",
-        markup: "VVVVVVVVVVVVVI",
-        cursor: 14,
-        current: "p1",
-        status: "ERROR",
-        message: "" / " already exists",
-        args: {
-          command: { name: "tsfile mkdir" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' already exists"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile mkdir /zxcv",
-      check: {
-        input:  "tsfile mkdir /zxcv",
-        // hints:                    ' -> /dev/',
-        markup: "VVVVVVVVVVVVVVVVVV",
-        cursor: 18,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile mkdir" },
-          p1: {
-            value: "/zxcv",
-            arg: " /zxcv",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile mkdir /mach_kernel",
-      check: {
-        input:  "tsfile mkdir /mach_kernel",
-        hints:                           "",
-        markup: "VVVVVVVVVVVVVIIIIIIIIIIII",
-        cursor: 25,
-        current: "p1",
-        status: "ERROR",
-        message: "'/mach_kernel' already exists",
-        args: {
-          command: { name: "tsfile mkdir" },
-          p1: {
-            value: undefined,
-            arg: " /mach_kernel",
-            status: "INCOMPLETE",
-            message: "'/mach_kernel' already exists"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile rm /",
-      check: {
-        input:  "tsfile rm /",
-        hints:             "",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile rm" },
-          p1: {
-            value: "/",
-            arg: " /",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile rm /zxcv",
-      check: {
-        input:  "tsfile rm /zxcv",
-        // hints:                 ' -> /etc/',
-        markup: "VVVVVVVVVVIIIII",
-        cursor: 15,
-        current: "p1",
-        status: "ERROR",
-        message: "'/zxcv' doesn't exist",
-        args: {
-          command: { name: "tsfile rm" },
-          p1: {
-            value: undefined,
-            arg: " /zxcv",
-            status: "INCOMPLETE",
-            message: "'/zxcv' doesn't exist"
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile rm /mach_kernel",
-      check: {
-        input:  "tsfile rm /mach_kernel",
-        hints:                        "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 22,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile rm" },
-          p1: {
-            value: "/mach_kernel",
-            arg: " /mach_kernel",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testFirefoxBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      // These tests are just like the ones above tailored for running in
-      // Firefox
-      skipRemainingIf: true,
-      // skipRemainingIf: !options.isFirefox,
-      skipIf: true,
-      setup:    "tsfile open /",
-      check: {
-        input:  "tsfile open /",
-        hints:               "",
-        markup: "VVVVVVVVVVVVI",
-        cursor: 13,
-        current: "p1",
-        status: "ERROR",
-        message: "'/' is not a file",
-        args: {
-          command: { name: "tsfile open" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' is not a file"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile open /zxcv",
-      check: {
-        input:  "tsfile open /zxcv",
-        // hints:                   ' -> /etc/',
-        markup: "VVVVVVVVVVVVIIIII",
-        cursor: 17,
-        current: "p1",
-        status: "ERROR",
-        message: "'/zxcv' doesn't exist",
-        args: {
-          command: { name: "tsfile open" },
-          p1: {
-            value: undefined,
-            arg: " /zxcv",
-            status: "INCOMPLETE",
-            message: "'/zxcv' doesn't exist"
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile open /mach_kernel",
-      check: {
-        input:  "tsfile open /mach_kernel",
-        hints:                          "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 24,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile open" },
-          p1: {
-            value: "/mach_kernel",
-            arg: " /mach_kernel",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile saveas /",
-      check: {
-        input:  "tsfile saveas /",
-        hints:                 "",
-        markup: "VVVVVVVVVVVVVVI",
-        cursor: 15,
-        current: "p1",
-        status: "ERROR",
-        message: "'/' already exists",
-        args: {
-          command: { name: "tsfile saveas" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' already exists"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile saveas /zxcv",
-      check: {
-        input:  "tsfile saveas /zxcv",
-        // hints:                     ' -> /etc/',
-        markup: "VVVVVVVVVVVVVVVVVVV",
-        cursor: 19,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile saveas" },
-          p1: {
-            value: "/zxcv",
-            arg: " /zxcv",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile saveas /mach_kernel",
-      check: {
-        input:  "tsfile saveas /mach_kernel",
-        hints:                            "",
-        markup: "VVVVVVVVVVVVVVIIIIIIIIIIII",
-        cursor: 26,
-        current: "p1",
-        status: "ERROR",
-        message: "'/mach_kernel' already exists",
-        args: {
-          command: { name: "tsfile saveas" },
-          p1: {
-            value: undefined,
-            arg: " /mach_kernel",
-            status: "INCOMPLETE",
-            message: "'/mach_kernel' already exists"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile save /",
-      check: {
-        input:  "tsfile save /",
-        hints:               "",
-        markup: "VVVVVVVVVVVVI",
-        cursor: 13,
-        current: "p1",
-        status: "ERROR",
-        message: "'/' is not a file",
-        args: {
-          command: { name: "tsfile save" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' is not a file"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile save /zxcv",
-      check: {
-        input:  "tsfile save /zxcv",
-        // hints:                   ' -> /etc/',
-        markup: "VVVVVVVVVVVVVVVVV",
-        cursor: 17,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile save" },
-          p1: {
-            value: "/zxcv",
-            arg: " /zxcv",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile save /mach_kernel",
-      check: {
-        input:  "tsfile save /mach_kernel",
-        hints:                          "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 24,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile save" },
-          p1: {
-            value: "/mach_kernel",
-            arg: " /mach_kernel",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile cd /",
-      check: {
-        input:  "tsfile cd /",
-        hints:             "",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile cd" },
-          p1: {
-            value: "/",
-            arg: " /",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile cd /zxcv",
-      check: {
-        input:  "tsfile cd /zxcv",
-        // hints:                 ' -> /dev/',
-        // markup: 'VVVVVVVVVVIIIII',
-        cursor: 15,
-        current: "p1",
-        // status: 'ERROR',
-        message: "'/zxcv' doesn't exist",
-        args: {
-          command: { name: "tsfile cd" },
-          p1: {
-            value: undefined,
-            arg: " /zxcv",
-            // status: 'INCOMPLETE',
-            message: "'/zxcv' doesn't exist"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true || !local,
-      setup:    "tsfile cd /etc/passwd",
-      check: {
-        input:  "tsfile cd /etc/passwd",
-        hints:                       " -> /etc/pam.d/",
-        markup: "VVVVVVVVVVIIIIIIIIIII",
-        cursor: 21,
-        current: "p1",
-        status: "ERROR",
-        message: "'/etc/passwd' is not a directory",
-        args: {
-          command: { name: "tsfile cd" },
-          p1: {
-            value: undefined,
-            arg: " /etc/passwd",
-            status: "INCOMPLETE",
-            message: "'/etc/passwd' is not a directory"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile mkdir /",
-      check: {
-        input:  "tsfile mkdir /",
-        hints:                "",
-        markup: "VVVVVVVVVVVVVI",
-        cursor: 14,
-        current: "p1",
-        status: "ERROR",
-        message: "" / " already exists",
-        args: {
-          command: { name: "tsfile mkdir" },
-          p1: {
-            value: undefined,
-            arg: " /",
-            status: "INCOMPLETE",
-            message: "'/' already exists"
-          }
-        }
-      }
-    },
-    {
-      setup:    "tsfile mkdir /zxcv",
-      check: {
-        input:  "tsfile mkdir /zxcv",
-        // hints:                    ' -> /dev/',
-        markup: "VVVVVVVVVVVVVVVVVV",
-        cursor: 18,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile mkdir" },
-          p1: {
-            value: "/zxcv",
-            arg: " /zxcv",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile mkdir /mach_kernel",
-      check: {
-        input:  "tsfile mkdir /mach_kernel",
-        hints:                           "",
-        markup: "VVVVVVVVVVVVVIIIIIIIIIIII",
-        cursor: 25,
-        current: "p1",
-        status: "ERROR",
-        message: "'/mach_kernel' already exists",
-        args: {
-          command: { name: "tsfile mkdir" },
-          p1: {
-            value: undefined,
-            arg: " /mach_kernel",
-            status: "INCOMPLETE",
-            message: "'/mach_kernel' already exists"
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile rm /",
-      check: {
-        input:  "tsfile rm /",
-        hints:             "",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile rm" },
-          p1: {
-            value: "/",
-            arg: " /",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      skipIf: true,
-      setup:    "tsfile rm /zxcv",
-      check: {
-        input:  "tsfile rm /zxcv",
-        // hints:                 ' -> /etc/',
-        markup: "VVVVVVVVVVIIIII",
-        cursor: 15,
-        current: "p1",
-        status: "ERROR",
-        message: "'/zxcv' doesn't exist",
-        args: {
-          command: { name: "tsfile rm" },
-          p1: {
-            value: undefined,
-            arg: " /zxcv",
-            status: "INCOMPLETE",
-            message: "'/zxcv' doesn't exist"
-          }
-        }
-      }
-    },
-    {
-      skipIf: !local,
-      setup:    "tsfile rm /mach_kernel",
-      check: {
-        input:  "tsfile rm /mach_kernel",
-        hints:                        "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 22,
-        current: "p1",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsfile rm" },
-          p1: {
-            value: "/mach_kernel",
-            arg: " /mach_kernel",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_fileparser.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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_fileparser.js");
-}
-
-// var assert = require('../testharness/assert');
-var fileparser = require("gcli/util/fileparser");
-
-var local = false;
-
-exports.testGetPredictor = function (options) {
-  if (!options.isNode || !local) {
-    assert.log("Skipping tests due to install differences.");
-    return;
-  }
-
-  var opts = { filetype: "file", existing: "yes" };
-  var predictor = fileparser.getPredictor("/usr/locl/bin/nmp", opts);
-  return predictor().then(function (replies) {
-    assert.is(replies[0].name,
-              "/usr/local/bin/npm",
-              "predict npm");
-  });
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_filesystem.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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_filesystem.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-var filesystem = require("gcli/util/filesystem");
-
-exports.testSplit = function (options) {
-  if (!options.isNode) {
-    return;
-  }
-
-  helpers.arrayIs(filesystem.split("", "/"),
-                  [ "." ],
-                  "split <blank>");
-
-  helpers.arrayIs(filesystem.split("a", "/"),
-                  [ "a" ],
-                  "split a");
-
-  helpers.arrayIs(filesystem.split("a/b/c", "/"),
-                  [ "a", "b", "c" ],
-                  "split a/b/c");
-
-  helpers.arrayIs(filesystem.split("/a/b/c/", "/"),
-                  [ "a", "b", "c" ],
-                  "split a/b/c");
-
-  helpers.arrayIs(filesystem.split("/a/b///c/", "/"),
-                  [ "a", "b", "c" ],
-                  "split a/b/c");
-};
-
-exports.testJoin = function (options) {
-  if (!options.isNode) {
-    return;
-  }
-
-  assert.is(filesystem.join("usr", "local", "bin"),
-            "usr/local/bin",
-            "join to usr/local/bin");
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_focus.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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_focus.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      name: "exec setup",
-      setup: function () {
-        // Just check that we've got focus, and everything is clear
-        helpers.focusInput(options);
-        return helpers.setInput(options, "echo hi");
-      },
-      check: { },
-      exec: { }
-    },
-    {
-      setup:    "tsn deep",
-      check: {
-        input:  "tsn deep",
-        hints:          " down nested cmd",
-        markup: "IIIVIIII",
-        cursor: 8,
-        status: "ERROR",
-        outputState: "false:default",
-        tooltipState: "false:default"
-      }
-    },
-    {
-      setup:    "tsn deep<TAB>",
-      check: {
-        input:  "tsn deep down nested cmd ",
-        hints:                           "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 25,
-        status: "VALID",
-        outputState: "false:default",
-        tooltipState: "false:default"
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_history.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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_history.js");
-}
-
-// var assert = require('../testharness/assert');
-var History = require("gcli/ui/history").History;
-
-exports.testSimpleHistory = function (options) {
-  var history = new History({});
-  history.add("foo");
-  history.add("bar");
-  assert.is(history.backward(), "bar");
-  assert.is(history.backward(), "foo");
-
-  // Adding to the history again moves us back to the start of the history.
-  history.add("quux");
-  assert.is(history.backward(), "quux");
-  assert.is(history.backward(), "bar");
-  assert.is(history.backward(), "foo");
-};
-
-exports.testBackwardsPastIndex = function (options) {
-  var history = new History({});
-  history.add("foo");
-  history.add("bar");
-  assert.is(history.backward(), "bar");
-  assert.is(history.backward(), "foo");
-
-  // Moving backwards past recorded history just keeps giving you the last
-  // item.
-  assert.is(history.backward(), "foo");
-};
-
-exports.testForwardsPastIndex = function (options) {
-  var history = new History({});
-  history.add("foo");
-  history.add("bar");
-  assert.is(history.backward(), "bar");
-  assert.is(history.backward(), "foo");
-
-  // Going forward through the history again.
-  assert.is(history.forward(), "bar");
-
-  // 'Present' time.
-  assert.is(history.forward(), "");
-
-  // Going to the 'future' just keeps giving us the empty string.
-  assert.is(history.forward(), "");
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_incomplete.js
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * 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_incomplete.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "tsu 2 extra",
-      check: {
-        args: {
-          num: { value: 2, type: "Argument" }
-        }
-      },
-      post: function () {
-        var requisition = options.requisition;
-
-        assert.is(requisition._unassigned.length,
-                  1,
-                  "single unassigned: tsu 2 extra");
-        assert.is(requisition._unassigned[0].param.type.isIncompleteName,
-                  false,
-                  "unassigned.isIncompleteName: tsu 2 extra");
-      }
-    },
-    {
-      setup: "tsu",
-      check: {
-        args: {
-          num: { value: undefined, type: "BlankArgument" }
-        }
-      }
-    },
-    {
-      setup: "tsg",
-      check: {
-        args: {
-          solo: { type: "BlankArgument" },
-          txt1: { type: "BlankArgument" },
-          bool: { type: "BlankArgument" },
-          txt2: { type: "BlankArgument" },
-          num: { type: "BlankArgument" }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testCompleted = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "tsela<TAB>",
-      check: {
-        args: {
-          command: { name: "tselarr", type: "Argument" },
-          num: { type: "BlankArgument" },
-          arr: { type: "ArrayArgument" }
-        }
-      }
-    },
-    {
-      setup:    "tsn dif ",
-      check: {
-        input:  "tsn dif ",
-        hints:          "<text>",
-        markup: "VVVVVVVV",
-        cursor: 8,
-        status: "ERROR",
-        args: {
-          command: { name: "tsn dif", type: "MergedArgument" },
-          text: { type: "BlankArgument", status: "INCOMPLETE" }
-        }
-      }
-    },
-    {
-      setup:    "tsn di<TAB>",
-      check: {
-        input:  "tsn dif ",
-        hints:          "<text>",
-        markup: "VVVVVVVV",
-        cursor: 8,
-        status: "ERROR",
-        args: {
-          command: { name: "tsn dif", type: "Argument" },
-          text: { type: "BlankArgument", status: "INCOMPLETE" }
-        }
-      }
-    },
-    // The above 2 tests take different routes to 'tsn dif '.
-    // The results should be similar. The difference is in args.command.type.
-    {
-      setup:    "tsg -",
-      check: {
-        input:  "tsg -",
-        hints:       "-txt1 <solo> [options]",
-        markup: "VVVVI",
-        cursor: 5,
-        status: "ERROR",
-        args: {
-          solo: { value: undefined, status: "INCOMPLETE" },
-          txt1: { value: undefined, status: "VALID" },
-          bool: { value: false, status: "VALID" },
-          txt2: { value: undefined, status: "VALID" },
-          num: { value: undefined, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tsg -<TAB>",
-      check: {
-        input:  "tsg --txt1 ",
-        hints:             "<string> <solo> [options]",
-        markup: "VVVVIIIIIIV",
-        cursor: 11,
-        status: "ERROR",
-        args: {
-          solo: { value: undefined, status: "INCOMPLETE" },
-          txt1: { value: undefined, status: "INCOMPLETE" },
-          bool: { value: false, status: "VALID" },
-          txt2: { value: undefined, status: "VALID" },
-          num: { value: undefined, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tsg --txt1 fred",
-      check: {
-        input:  "tsg --txt1 fred",
-        hints:                 " <solo> [options]",
-        markup: "VVVVVVVVVVVVVVV",
-        status: "ERROR",
-        args: {
-          solo: { value: undefined, status: "INCOMPLETE" },
-          txt1: { value: "fred", status: "VALID" },
-          bool: { value: false, status: "VALID" },
-          txt2: { value: undefined, status: "VALID" },
-          num: { value: undefined, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tscook key value --path path --",
-      check: {
-        input:  "tscook key value --path path --",
-        hints:                                 "domain [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVII",
-        status: "ERROR",
-        args: {
-          key: { value: "key", status: "VALID" },
-          value: { value: "value", status: "VALID" },
-          path: { value: "path", status: "VALID" },
-          domain: { value: undefined, status: "VALID" },
-          secure: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tscook key value --path path --domain domain --",
-      check: {
-        input:  "tscook key value --path path --domain domain --",
-        hints:                                                 "secure [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVII",
-        status: "ERROR",
-        args: {
-          key: { value: "key", status: "VALID" },
-          value: { value: "value", status: "VALID" },
-          path: { value: "path", status: "VALID" },
-          domain: { value: "domain", status: "VALID" },
-          secure: { value: false, status: "VALID" }
-        }
-      }
-    }
-  ]);
-
-};
-
-exports.testCase = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsg AA",
-      check: {
-        input:  "tsg AA",
-        hints:        " [options] -> aaa",
-        markup: "VVVVII",
-        status: "ERROR",
-        args: {
-          solo: { value: undefined, text: "AA", status: "INCOMPLETE" },
-          txt1: { value: undefined, status: "VALID" },
-          bool: { value: false, status: "VALID" },
-          txt2: { value: undefined, status: "VALID" },
-          num: { value: undefined, status: "VALID" }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testIncomplete = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsm a a -",
-      check: {
-        args: {
-          abc: { value: "a", type: "Argument" },
-          txt: { value: "a", type: "Argument" },
-          num: { value: undefined, arg: " -", type: "Argument", status: "INCOMPLETE" }
-        }
-      }
-    },
-    {
-      setup:    "tsg -",
-      check: {
-        args: {
-          solo: { type: "BlankArgument" },
-          txt1: { type: "BlankArgument" },
-          bool: { type: "BlankArgument" },
-          txt2: { type: "BlankArgument" },
-          num: { type: "BlankArgument" }
-        }
-      },
-      post: function () {
-        var requisition = options.requisition;
-
-        assert.is(requisition._unassigned[0],
-                  requisition.getAssignmentAt(5),
-                  "unassigned -");
-        assert.is(requisition._unassigned.length,
-                  1,
-                  "single unassigned - tsg -");
-        assert.is(requisition._unassigned[0].param.type.isIncompleteName,
-                  true,
-                  "unassigned.isIncompleteName: tsg -");
-      }
-    }
-  ]);
-};
-
-exports.testRepeated = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tscook key value --path jjj --path kkk",
-      check: {
-        input:  "tscook key value --path jjj --path kkk",
-        hints:                                        " [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVEEEEEEVEEE",
-        cursor: 38,
-        current: "__unassigned",
-        status: "ERROR",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ " --path", " kkk" ],
-        args: {
-          command: { name: "tscook" },
-          key: {
-            value: "key",
-            arg: " key",
-            status: "VALID",
-            message: ""
-          },
-          value: {
-            value: "value",
-            arg: " value",
-            status: "VALID",
-            message: ""
-          },
-          path: {
-            value: "jjj",
-            arg: " --path jjj",
-            status: "VALID",
-            message: ""
-          },
-          domain: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          secure: {
-            value: false,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-        }
-      }
-    }
-  ]);
-};
-
-exports.testHidden = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tshidde",
-      check: {
-        input:  "tshidde",
-        hints:         " -> tse",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "tshidden",
-      check: {
-        input:  "tshidden",
-        hints:          " [options]",
-        markup: "VVVVVVVV",
-        status: "VALID",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: undefined, status: "VALID" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --vis",
-      check: {
-        input:  "tshidden --vis",
-        hints:                "ible [options]",
-        markup: "VVVVVVVVVIIIII",
-        status: "ERROR",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: undefined, status: "VALID" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --invisiblestrin",
-      check: {
-        input:  "tshidden --invisiblestrin",
-        hints:                           " [options]",
-        markup: "VVVVVVVVVEEEEEEEEEEEEEEEE",
-        status: "ERROR",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: undefined, status: "VALID" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --invisiblestring",
-      check: {
-        input:  "tshidden --invisiblestring",
-        hints:                            " <string> [options]",
-        markup: "VVVVVVVVVIIIIIIIIIIIIIIIII",
-        status: "ERROR",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: undefined, status: "INCOMPLETE" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --invisiblestring x",
-      check: {
-        input:  "tshidden --invisiblestring x",
-        hints:                              " [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: "x", status: "VALID" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --invisibleboolea",
-      check: {
-        input:  "tshidden --invisibleboolea",
-        hints:                            " [options]",
-        markup: "VVVVVVVVVEEEEEEEEEEEEEEEEE",
-        status: "ERROR",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: undefined, status: "VALID" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --invisibleboolean",
-      check: {
-        input:  "tshidden --invisibleboolean",
-        hints:                             " [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        args: {
-          visible: { value: undefined, status: "VALID" },
-          invisiblestring: { value: undefined, status: "VALID" },
-          invisibleboolean: { value: true, status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tshidden --visible xxx",
-      check: {
-        input:  "tshidden --visible xxx",
-        markup: "VVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        hints:  "",
-        args: {
-          visible: { value: "xxx", status: "VALID" },
-          invisiblestring: { value: undefined, status: "VALID" },
-          invisibleboolean: { value: false, status: "VALID" }
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_inputter.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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_inputter.js");
-}
-
-// var assert = require('../testharness/assert');
-var KeyEvent = require("gcli/util/util").KeyEvent;
-
-var latestEvent;
-var latestData;
-
-var outputted = function (ev) {
-  latestEvent = ev;
-
-  ev.output.promise.then(function () {
-    latestData = ev.output.data;
-  });
-};
-
-
-exports.setup = function (options) {
-  options.requisition.commandOutputManager.onOutput.add(outputted);
-};
-
-exports.shutdown = function (options) {
-  options.requisition.commandOutputManager.onOutput.remove(outputted);
-};
-
-exports.testOutput = function (options) {
-  latestEvent = undefined;
-  latestData = undefined;
-
-  var terminal = options.terminal;
-  if (!terminal) {
-    assert.log("Skipping testInputter.testOutput due to lack of terminal.");
-    return;
-  }
-
-  var focusManager = terminal.focusManager;
-
-  terminal.setInput("tss");
-
-  var ev0 = { keyCode: KeyEvent.DOM_VK_RETURN };
-  terminal.onKeyDown(ev0);
-
-  assert.is(terminal.getInputState().typed,
-            "tss",
-            "terminal should do nothing on RETURN keyDown");
-  assert.is(latestEvent, undefined, "no events this test");
-  assert.is(latestData, undefined, "no data this test");
-
-  var ev1 = { keyCode: KeyEvent.DOM_VK_RETURN };
-  return terminal.handleKeyUp(ev1).then(function () {
-    assert.ok(latestEvent != null, "events this test");
-    assert.is(latestData.name, "tss", "last command is tss");
-
-    assert.is(terminal.getInputState().typed,
-              "",
-              "terminal should exec on RETURN keyUp");
-
-    assert.ok(focusManager._recentOutput, "recent output happened");
-
-    var ev2 = { keyCode: KeyEvent.DOM_VK_F1 };
-    return terminal.handleKeyUp(ev2).then(function () {
-      assert.ok(!focusManager._recentOutput, "no recent output happened post F1");
-      assert.ok(focusManager._helpRequested, "F1 = help");
-
-      var ev3 = { keyCode: KeyEvent.DOM_VK_ESCAPE };
-      return terminal.handleKeyUp(ev3).then(function () {
-        assert.ok(!focusManager._helpRequested, "ESCAPE = anti help");
-      });
-    });
-
-  });
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_intro.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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_intro.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testIntroStatus = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: function commandIntroMissing() {
-        return options.requisition.system.commands.get("intro") == null;
-      },
-      setup:    "intro",
-      check: {
-        typed:  "intro",
-        markup: "VVVVV",
-        status: "VALID",
-        hints: ""
-      }
-    },
-    {
-      setup:    "intro foo",
-      check: {
-        typed:  "intro foo",
-        markup: "VVVVVVEEE",
-        status: "ERROR",
-        hints: ""
-      }
-    },
-    {
-      setup:    "intro",
-      check: {
-        typed:  "intro",
-        markup: "VVVVV",
-        status: "VALID",
-        hints: ""
-      },
-      exec: {
-        output: [
-          /command\s*line/,
-          /help/,
-          /F1/,
-          /Escape/
-        ]
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_js.js
+++ /dev/null
@@ -1,570 +0,0 @@
-/*
- * 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_js.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.setup = function (options) {
-  if (jsTestDisallowed(options)) {
-    return;
-  }
-
-  // Check that we're not trespassing on 'donteval'
-  var win = options.requisition.environment.window;
-  Object.defineProperty(win, "donteval", {
-    get: function () {
-      assert.ok(false, "donteval should not be used");
-      console.trace();
-      return { cant: "", touch: "", "this": "" };
-    },
-    enumerable: true,
-    configurable: true
-  });
-};
-
-exports.shutdown = function (options) {
-  if (jsTestDisallowed(options)) {
-    return;
-  }
-
-  delete options.requisition.environment.window.donteval;
-};
-
-function jsTestDisallowed(options) {
-  return options.isRemote || // Altering the environment (which isn't remoted)
-         options.isNode ||
-         options.requisition.system.commands.get("{") == null;
-}
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: jsTestDisallowed,
-      setup:    "{",
-      check: {
-        input:  "{",
-        hints:   "",
-        markup: "V",
-        cursor: 1,
-        current: "javascript",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: undefined,
-            arg: "{",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ ",
-      check: {
-        input:  "{ ",
-        hints:    "",
-        markup: "VV",
-        cursor: 2,
-        current: "javascript",
-        status: "ERROR",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: undefined,
-            arg: "{ ",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ w",
-      check: {
-        input:  "{ w",
-        hints:     "indow",
-        markup: "VVI",
-        cursor: 3,
-        current: "javascript",
-        status: "ERROR",
-        predictionsContains: [ "window" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "w",
-            arg: "{ w",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ windo",
-      check: {
-        input:  "{ windo",
-        hints:         "w",
-        markup: "VVIIIII",
-        cursor: 7,
-        current: "javascript",
-        status: "ERROR",
-        predictions: [ "window" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "windo",
-            arg: "{ windo",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ window",
-      check: {
-        input:  "{ window",
-        hints:          "",
-        markup: "VVVVVVVV",
-        cursor: 8,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "window",
-            arg: "{ window",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ window.do",
-      check: {
-        input:  "{ window.do",
-        hints:             "cument",
-        markup: "VVIIIIIIIII",
-        cursor: 11,
-        current: "javascript",
-        status: "ERROR",
-        predictionsContains: [ "window.document" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "window.do",
-            arg: "{ window.do",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ window.document.title",
-      check: {
-        input:  "{ window.document.title",
-        hints:                         "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 23,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "window.document.title",
-            arg: "{ window.document.title",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testDocument = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: jsTestDisallowed,
-      setup:    "{ docu",
-      check: {
-        input:  "{ docu",
-        hints:        "ment",
-        markup: "VVIIII",
-        cursor: 6,
-        current: "javascript",
-        status: "ERROR",
-        predictions: [ "document" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "docu",
-            arg: "{ docu",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup: "{ docu<TAB>",
-      check: {
-        input:  "{ document",
-        hints:            "",
-        markup: "VVVVVVVVVV",
-        cursor: 10,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "document",
-            arg: "{ document",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ document.titl",
-      check: {
-        input:  "{ document.titl",
-        hints:                 "e",
-        markup: "VVIIIIIIIIIIIII",
-        cursor: 15,
-        current: "javascript",
-        status: "ERROR",
-        predictions: [ "document.title" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "document.titl",
-            arg: "{ document.titl",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup: "{ document.titl<TAB>",
-      check: {
-        input:  "{ document.title ",
-        hints:                   "",
-        markup: "VVVVVVVVVVVVVVVVV",
-        cursor: 17,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "document.title",
-            // arg: '{ document.title ',
-            // Node/JSDom gets this wrong and omits the trailing space. Why?
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ document.title",
-      check: {
-        input:  "{ document.title",
-        hints:                  "",
-        markup: "VVVVVVVVVVVVVVVV",
-        cursor: 16,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "document.title",
-            arg: "{ document.title",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testDonteval = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: true, // Commented out until we fix non-enumerable props
-      setup:    "{ don",
-      check: {
-        input:  "{ don",
-        hints:       "teval",
-        markup: "VVIII",
-        cursor: 5,
-        current: "javascript",
-        status: "ERROR",
-        predictions: [ "donteval" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "don",
-            arg: "{ don",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ donteval",
-      check: {
-        input:  "{ donteval",
-        hints:            "",
-        markup: "VVVVVVVVVV",
-        cursor: 10,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "donteval",
-            arg: "{ donteval",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    /*
-    // This is a controversial test - technically we can tell that it's an error
-    // because 'donteval.' is a syntax error, however donteval is unsafe so we
-    // are playing safe by bailing out early. It's enough of a corner case that
-    // I don't think it warrants fixing
-    {
-      setup:    '{ donteval.',
-      check: {
-        input:  '{ donteval.',
-        hints:             '',
-        markup: 'VVVVVVVVVVV',
-        cursor: 11,
-        current: 'javascript',
-        status: 'VALID',
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: '{' },
-          javascript: {
-            value: 'donteval.',
-            arg: '{ donteval.',
-            status: 'VALID',
-            message: ''
-          }
-        }
-      }
-    },
-    */
-    {
-      setup:    "{ donteval.cant",
-      check: {
-        input:  "{ donteval.cant",
-        hints:                 "",
-        markup: "VVVVVVVVVVVVVVV",
-        cursor: 15,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "donteval.cant",
-            arg: "{ donteval.cant",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "{ donteval.xxx",
-      check: {
-        input:  "{ donteval.xxx",
-        hints:                "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "javascript",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "{" },
-          javascript: {
-            value: "donteval.xxx",
-            arg: "{ donteval.xxx",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testExec = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: jsTestDisallowed,
-      setup:    "{ 1+1",
-      check: {
-        input:  "{ 1+1",
-        hints:       "",
-        markup: "VVVVV",
-        cursor: 5,
-        current: "javascript",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          javascript: {
-            value: "1+1",
-            arg: "{ 1+1",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "2",
-        type: "number",
-        error: false
-      }
-    },
-    {
-      setup:    "{ 1+1 }",
-      check: {
-        input:  "{ 1+1 }",
-        hints:         "",
-        markup: "VVVVVVV",
-        cursor: 7,
-        current: "javascript",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          javascript: {
-            value: "1+1",
-            arg: "{ 1+1 }",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "2",
-        type: "number",
-        error: false
-      }
-    },
-    {
-      setup:    '{ "hello"',
-      check: {
-        input:  '{ "hello"',
-        hints:           "",
-        markup: "VVVVVVVVV",
-        cursor: 9,
-        current: "javascript",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          javascript: {
-            value: '"hello"',
-            arg: '{ "hello"',
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "hello",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    '{ "hello" + 1',
-      check: {
-        input:  '{ "hello" + 1',
-        hints:               "",
-        markup: "VVVVVVVVVVVVV",
-        cursor: 13,
-        current: "javascript",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          javascript: {
-            value: '"hello" + 1',
-            arg: '{ "hello" + 1',
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "hello1",
-        type: "string",
-        error: false
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_keyboard1.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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_keyboard1.js");
-}
-
-var javascript = require("gcli/types/javascript");
-// var helpers = require('./helpers');
-
-exports.testSimple = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "tsela<TAB>",
-      check: { input: "tselarr ", cursor: 8 }
-    },
-    {
-      setup: "tsn di<TAB>",
-      check: { input: "tsn dif ", cursor: 8 }
-    },
-    {
-      setup: "tsg a<TAB>",
-      check: { input: "tsg aaa ", cursor: 8 }
-    }
-  ]);
-};
-
-exports.testScript = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.isRemote ||
-              options.requisition.system.commands.get("{") == null,
-      setup: "{ wind<TAB>",
-      check: { input: "{ window" }
-    },
-    {
-      setup: "{ window.docum<TAB>",
-      check: { input: "{ window.document" }
-    }
-  ]);
-};
-
-exports.testJsdom = function (options) {
-  return helpers.audit(options, [
-    {
-      skipIf: options.isRemote ||
-              options.requisition.system.commands.get("{") == null,
-      setup: "{ window.document.titl<TAB>",
-      check: { input: "{ window.document.title " }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_keyboard2.js
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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_keyboard2.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testIncr = function (options) {
-  return helpers.audit(options, [
-    /*
-    // We currently refuse to increment/decrement things with a non-valid
-    // status which makes sense for many cases, and is a decent default.
-    // However in theory we could do better, these tests are there for then
-    {
-      setup: 'tsu -70<UP>',
-      check: { input: 'tsu -5' }
-    },
-    {
-      setup: 'tsu -7<UP>',
-      check: { input: 'tsu -5' }
-    },
-    {
-      setup: 'tsu -6<UP>',
-      check: { input: 'tsu -5' }
-    },
-    */
-    {
-      setup: "tsu -5<UP>",
-      check: { input: "tsu -3" }
-    },
-    {
-      setup: "tsu -4<UP>",
-      check: { input: "tsu -3" }
-    },
-    {
-      setup: "tsu -3<UP>",
-      check: { input: "tsu 0" }
-    },
-    {
-      setup: "tsu -2<UP>",
-      check: { input: "tsu 0" }
-    },
-    {
-      setup: "tsu -1<UP>",
-      check: { input: "tsu 0" }
-    },
-    {
-      setup: "tsu 0<UP>",
-      check: { input: "tsu 3" }
-    },
-    {
-      setup: "tsu 1<UP>",
-      check: { input: "tsu 3" }
-    },
-    {
-      setup: "tsu 2<UP>",
-      check: { input: "tsu 3" }
-    },
-    {
-      setup: "tsu 3<UP>",
-      check: { input: "tsu 6" }
-    },
-    {
-      setup: "tsu 4<UP>",
-      check: { input: "tsu 6" }
-    },
-    {
-      setup: "tsu 5<UP>",
-      check: { input: "tsu 6" }
-    },
-    {
-      setup: "tsu 6<UP>",
-      check: { input: "tsu 9" }
-    },
-    {
-      setup: "tsu 7<UP>",
-      check: { input: "tsu 9" }
-    },
-    {
-      setup: "tsu 8<UP>",
-      check: { input: "tsu 9" }
-    },
-    {
-      setup: "tsu 9<UP>",
-      check: { input: "tsu 10" }
-    },
-    {
-      setup: "tsu 10<UP>",
-      check: { input: "tsu 10" }
-    }
-    /*
-    // See notes above
-    {
-      setup: 'tsu 100<UP>',
-      check: { input: 'tsu 10' }
-    }
-    */
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_keyboard3.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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_keyboard3.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testDecr = function (options) {
-  return helpers.audit(options, [
-    /*
-    // See notes at top of testIncr in testKeyboard2.js
-    {
-      setup: 'tsu -70<DOWN>',
-      check: { input: 'tsu -5' }
-    },
-    {
-      setup: 'tsu -7<DOWN>',
-      check: { input: 'tsu -5' }
-    },
-    {
-      setup: 'tsu -6<DOWN>',
-      check: { input: 'tsu -5' }
-    },
-    */
-    {
-      setup: "tsu -5<DOWN>",
-      check: { input: "tsu -5" }
-    },
-    {
-      setup: "tsu -4<DOWN>",
-      check: { input: "tsu -5" }
-    },
-    {
-      setup: "tsu -3<DOWN>",
-      check: { input: "tsu -5" }
-    },
-    {
-      setup: "tsu -2<DOWN>",
-      check: { input: "tsu -3" }
-    },
-    {
-      setup: "tsu -1<DOWN>",
-      check: { input: "tsu -3" }
-    },
-    {
-      setup: "tsu 0<DOWN>",
-      check: { input: "tsu -3" }
-    },
-    {
-      setup: "tsu 1<DOWN>",
-      check: { input: "tsu 0" }
-    },
-    {
-      setup: "tsu 2<DOWN>",
-      check: { input: "tsu 0" }
-    },
-    {
-      setup: "tsu 3<DOWN>",
-      check: { input: "tsu 0" }
-    },
-    {
-      setup: "tsu 4<DOWN>",
-      check: { input: "tsu 3" }
-    },
-    {
-      setup: "tsu 5<DOWN>",
-      check: { input: "tsu 3" }
-    },
-    {
-      setup: "tsu 6<DOWN>",
-      check: { input: "tsu 3" }
-    },
-    {
-      setup: "tsu 7<DOWN>",
-      check: { input: "tsu 6" }
-    },
-    {
-      setup: "tsu 8<DOWN>",
-      check: { input: "tsu 6" }
-    },
-    {
-      setup: "tsu 9<DOWN>",
-      check: { input: "tsu 6" }
-    },
-    {
-      setup: "tsu 10<DOWN>",
-      check: { input: "tsu 9" }
-    }
-    /*
-    // See notes at top of testIncr
-    {
-      setup: 'tsu 100<DOWN>',
-      check: { input: 'tsu 9' }
-    }
-    */
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_keyboard4.js
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 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_keyboard4.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testIncrFloat = function (options) {
-  return helpers.audit(options, [
-    /*
-    // See notes at top of testIncr
-    {
-      setup: 'tsf -70<UP>',
-      check: { input: 'tsf -6.5' }
-    },
-    */
-    {
-      setup: "tsf -6.5<UP>",
-      check: { input: "tsf -6" }
-    },
-    {
-      setup: "tsf -6<UP>",
-      check: { input: "tsf -4.5" }
-    },
-    {
-      setup: "tsf -4.5<UP>",
-      check: { input: "tsf -3" }
-    },
-    {
-      setup: "tsf -4<UP>",
-      check: { input: "tsf -3" }
-    },
-    {
-      setup: "tsf -3<UP>",
-      check: { input: "tsf -1.5" }
-    },
-    {
-      setup: "tsf -1.5<UP>",
-      check: { input: "tsf 0" }
-    },
-    {
-      setup: "tsf 0<UP>",
-      check: { input: "tsf 1.5" }
-    },
-    {
-      setup: "tsf 1.5<UP>",
-      check: { input: "tsf 3" }
-    },
-    {
-      setup: "tsf 2<UP>",
-      check: { input: "tsf 3" }
-    },
-    {
-      setup: "tsf 3<UP>",
-      check: { input: "tsf 4.5" }
-    },
-    {
-      setup: "tsf 5<UP>",
-      check: { input: "tsf 6" }
-    }
-    /*
-    // See notes at top of testIncr
-    {
-      setup: 'tsf 100<UP>',
-      check: { input: 'tsf -6.5' }
-    }
-    */
-  ]);
-};
-
-exports.testDecrFloat = function (options) {
-  return helpers.audit(options, [
-    /*
-    // See notes at top of testIncr
-    {
-      setup: 'tsf -70<DOWN>',
-      check: { input: 'tsf 11.5' }
-    },
-    */
-    {
-      setup: "tsf -6.5<DOWN>",
-      check: { input: "tsf -6.5" }
-    },
-    {
-      setup: "tsf -6<DOWN>",
-      check: { input: "tsf -6.5" }
-    },
-    {
-      setup: "tsf -4.5<DOWN>",
-      check: { input: "tsf -6" }
-    },
-    {
-      setup: "tsf -4<DOWN>",
-      check: { input: "tsf -4.5" }
-    },
-    {
-      setup: "tsf -3<DOWN>",
-      check: { input: "tsf -4.5" }
-    },
-    {
-      setup: "tsf -1.5<DOWN>",
-      check: { input: "tsf -3" }
-    },
-    {
-      setup: "tsf 0<DOWN>",
-      check: { input: "tsf -1.5" }
-    },
-    {
-      setup: "tsf 1.5<DOWN>",
-      check: { input: "tsf 0" }
-    },
-    {
-      setup: "tsf 2<DOWN>",
-      check: { input: "tsf 1.5" }
-    },
-    {
-      setup: "tsf 3<DOWN>",
-      check: { input: "tsf 1.5" }
-    },
-    {
-      setup: "tsf 5<DOWN>",
-      check: { input: "tsf 4.5" }
-    }
-    /*
-    // See notes at top of testIncr
-    {
-      setup: 'tsf 100<DOWN>',
-      check: { input: 'tsf 11.5' }
-    }
-    */
-  ]);
-};
-
-exports.testIncrSelection = function (options) {
-  /*
-  // Bug 829516:  GCLI up/down navigation over selection is sometimes bizarre
-  return helpers.audit(options, [
-    {
-      setup: 'tselarr <DOWN>',
-      check: { hints: '2' },
-      exec: {}
-    },
-    {
-      setup: 'tselarr <DOWN><DOWN>',
-      check: { hints: '3' },
-      exec: {}
-    },
-    {
-      setup: 'tselarr <DOWN><DOWN><DOWN>',
-      check: { hints: '1' },
-      exec: {}
-    }
-  ]);
-  */
-};
-
-exports.testDecrSelection = function (options) {
-  /*
-  // Bug 829516:  GCLI up/down navigation over selection is sometimes bizarre
-  return helpers.audit(options, [
-    {
-      setup: 'tselarr <UP>',
-      check: { hints: '3' }
-    }
-  ]);
-  */
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_keyboard5.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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_keyboard5.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testCompleteDown = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "tsn e<DOWN><DOWN><DOWN><DOWN><DOWN><TAB>",
-      check: { input: "tsn exte " }
-    },
-    {
-      setup: "tsn e<DOWN><DOWN><DOWN><DOWN><TAB>",
-      check: { input: "tsn ext " }
-    },
-    {
-      setup: "tsn e<DOWN><DOWN><DOWN><TAB>",
-      check: { input: "tsn extend " }
-    },
-    {
-      setup: "tsn e<DOWN><DOWN><TAB>",
-      check: { input: "tsn exten " }
-    },
-    {
-      setup: "tsn e<DOWN><TAB>",
-      check: { input: "tsn exte " }
-    },
-    {
-      setup: "tsn e<TAB>",
-      check: { input: "tsn ext " }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_keyboard6.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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_keyboard6.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testCompleteUp = function (options) {
-  return helpers.audit(options, [
-    {
-      setup: "tsn e<UP><TAB>",
-      check: { input: "tsn extend " }
-    },
-    {
-      setup: "tsn e<UP><UP><TAB>",
-      check: { input: "tsn exten " }
-    },
-    {
-      setup: "tsn e<UP><UP><UP><TAB>",
-      check: { input: "tsn exte " }
-    },
-    {
-      setup: "tsn e<UP><UP><UP><UP><TAB>",
-      check: { input: "tsn ext " }
-    },
-    {
-      setup: "tsn e<UP><UP><UP><UP><UP><TAB>",
-      check: { input: "tsn extend " }
-    },
-    {
-      setup: "tsn e<UP><UP><UP><UP><UP><UP><TAB>",
-      check: { input: "tsn exten " }
-    },
-    {
-      setup: "tsn e<UP><UP><UP><UP><UP><UP><UP><TAB>",
-      check: { input: "tsn exte " }
-    },
-    {
-      setup: "tsn e<UP><UP><UP><UP><UP><UP><UP><UP><TAB>",
-      check: { input: "tsn ext " }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_menu.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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_menu.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testOptions = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tslong",
-      check: {
-        input:  "tslong",
-        markup: "VVVVVV",
-        status: "ERROR",
-        hints: " <msg> [options]",
-        args: {
-          msg: { value: undefined, status: "INCOMPLETE" },
-          num: { value: undefined, status: "VALID" },
-          sel: { value: undefined, status: "VALID" },
-          bool: { value: false, status: "VALID" },
-          bool2: { value: false, status: "VALID" },
-          sel2: { value: undefined, status: "VALID" },
-          num2: { value: undefined, status: "VALID" }
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_node.js
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * 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_node.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.testNode = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tse ",
-      check: {
-        input:  "tse ",
-        hints:      "<node> [options]",
-        markup: "VVVV",
-        cursor: 4,
-        current: "node",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: { status: "INCOMPLETE" },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tse :",
-      check: {
-        input:  "tse :",
-        hints:       " [options]",
-        markup: "VVVVE",
-        cursor: 5,
-        current: "node",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            arg: " :",
-            status: "ERROR",
-            message: "Syntax error in CSS query"
-          },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tse #",
-      check: {
-        input:  "tse #",
-        hints:       " [options]",
-        markup: "VVVVE",
-        cursor: 5,
-        current: "node",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            value: undefined,
-            arg: " #",
-            status: "ERROR",
-            message: "Syntax error in CSS query"
-          },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tse .",
-      check: {
-        input:  "tse .",
-        hints:       " [options]",
-        markup: "VVVVE",
-        cursor: 5,
-        current: "node",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            value: undefined,
-            arg: " .",
-            status: "ERROR",
-            message: "Syntax error in CSS query"
-          },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tse *",
-      check: {
-        input:  "tse *",
-        hints:       " [options]",
-        markup: "VVVVE",
-        cursor: 5,
-        current: "node",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            value: undefined,
-            arg: " *",
-            status: "ERROR"
-            // message: 'Too many matches (128)'
-          },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testNodeDom = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tse :root",
-      check: {
-        input:  "tse :root",
-        hints:           " [options]",
-        markup: "VVVVVVVVV",
-        cursor: 9,
-        current: "node",
-        status: "VALID",
-        args: {
-          command: { name: "tse" },
-          node: { arg: " :root", status: "VALID" },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    },
-    {
-      setup:    "tse :root ",
-      check: {
-        input:  "tse :root ",
-        hints:            "[options]",
-        markup: "VVVVVVVVVV",
-        cursor: 10,
-        current: "node",
-        status: "VALID",
-        args: {
-          command: { name: "tse" },
-          node: { arg: " :root ", status: "VALID" },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      },
-      exec: {
-      },
-      post: function (output) {
-        if (!options.isRemote) {
-          assert.is(output.args.node.tagName, "HTML", ":root tagName");
-        }
-      }
-    },
-    {
-      setup:    "tse #gcli-nomatch",
-      check: {
-        input:  "tse #gcli-nomatch",
-        hints:                   " [options]",
-        markup: "VVVVIIIIIIIIIIIII",
-        cursor: 17,
-        current: "node",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            value: undefined,
-            arg: " #gcli-nomatch",
-            status: "INCOMPLETE",
-            message: "No matches"
-          },
-          nodes: { status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testNodes = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tse :root --nodes *",
-      check: {
-        input:  "tse :root --nodes *",
-        hints:                       " [options]",
-        markup: "VVVVVVVVVVVVVVVVVVV",
-        current: "nodes",
-        status: "VALID",
-        args: {
-          command: { name: "tse" },
-          node: { arg: " :root", status: "VALID" },
-          nodes: { arg: " --nodes *", status: "VALID" },
-          nodes2: { status: "VALID" }
-        }
-      },
-      exec: {
-      },
-      post: function (output) {
-        if (!options.isRemote) {
-          assert.is(output.args.node.tagName, "HTML", ":root tagName");
-          assert.ok(output.args.nodes.length > 3, "nodes length");
-          assert.is(output.args.nodes2.length, 0, "nodes2 length");
-        }
-
-        assert.is(output.data.args.node, ":root", "node data");
-        assert.is(output.data.args.nodes, "*", "nodes data");
-        assert.is(output.data.args.nodes2, "Error", "nodes2 data");
-      }
-    },
-    {
-      setup:    "tse :root --nodes2 div",
-      check: {
-        input:  "tse :root --nodes2 div",
-        hints:                       " [options]",
-        markup: "VVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 22,
-        current: "nodes2",
-        status: "VALID",
-        args: {
-          command: { name: "tse" },
-          node: { arg: " :root", status: "VALID" },
-          nodes: { status: "VALID" },
-          nodes2: { arg: " --nodes2 div", status: "VALID" }
-        }
-      },
-      exec: {
-      },
-      post: function (output) {
-        if (!options.isRemote) {
-          assert.is(output.args.node.tagName, "HTML", ":root tagName");
-          assert.is(output.args.nodes.length, 0, "nodes length");
-          assert.is(output.args.nodes2.item(0).tagName, "DIV", "div tagName");
-        }
-
-        assert.is(output.data.args.node, ":root", "node data");
-        assert.is(output.data.args.nodes, "Error", "nodes data");
-        assert.is(output.data.args.nodes2, "div", "nodes2 data");
-      }
-    },
-    {
-      setup:    "tse --nodes ffff",
-      check: {
-        input:  "tse --nodes ffff",
-        hints:                  " <node> [options]",
-        markup: "VVVVIIIIIIIVIIII",
-        cursor: 16,
-        current: "nodes",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE"
-          },
-          nodes: {
-            value: undefined,
-            arg: " --nodes ffff",
-            status: "INCOMPLETE",
-            message: "No matches"
-          },
-          nodes2: { arg: "", status: "VALID", message: "" }
-        }
-      }
-    },
-    {
-      setup:    "tse --nodes2 ffff",
-      check: {
-        input:  "tse --nodes2 ffff",
-        hints:                   " <node> [options]",
-        markup: "VVVVVVVVVVVVVVVVV",
-        cursor: 17,
-        current: "nodes2",
-        status: "ERROR",
-        args: {
-          command: { name: "tse" },
-          node: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE"
-          },
-          nodes: { arg: "", status: "VALID", message: "" },
-          nodes2: { arg: " --nodes2 ffff", status: "VALID", message: "" }
-        }
-      }
-    },
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_pref1.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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_pref1.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testPrefShowStatus = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.requisition.system.commands.get("pref") == null,
-      setup:    "pref s",
-      check: {
-        typed:  "pref s",
-        hints:        "et",
-        markup: "IIIIVI",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref show",
-      check: {
-        typed:  "pref show",
-        hints:           " <setting>",
-        markup: "VVVVVVVVV",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref show ",
-      check: {
-        typed:  "pref show ",
-        hints:            "eagerHelper",
-        markup: "VVVVVVVVVV",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref show tempTBo",
-      check: {
-        typed:  "pref show tempTBo",
-        hints:                   "ol",
-        markup: "VVVVVVVVVVIIIIIII",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref show tempTBool",
-      check: {
-        typed:  "pref show tempTBool",
-        markup: "VVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        hints:  ""
-      }
-    },
-    {
-      setup:    "pref show tempTBool 4",
-      check: {
-        typed:  "pref show tempTBool 4",
-        markup: "VVVVVVVVVVVVVVVVVVVVE",
-        status: "ERROR",
-        hints:  ""
-      }
-    },
-    {
-      setup:    "pref show tempNumber 4",
-      check: {
-        typed:  "pref show tempNumber 4",
-        markup: "VVVVVVVVVVVVVVVVVVVVVE",
-        status: "ERROR",
-        hints:  ""
-      }
-    }
-  ]);
-};
-
-exports.testPrefSetStatus = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.requisition.system.commands.get("pref") == null,
-      setup:    "pref s",
-      check: {
-        typed:  "pref s",
-        hints:        "et",
-        markup: "IIIIVI",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref set",
-      check: {
-        typed:  "pref set",
-        hints:          " <setting> <value>",
-        markup: "VVVVVVVV",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref xxx",
-      check: {
-        typed:  "pref xxx",
-        markup: "IIIIVIII",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref set ",
-      check: {
-        typed:  "pref set ",
-        hints:           "eagerHelper <value>",
-        markup: "VVVVVVVVV",
-        status: "ERROR"
-      }
-    },
-    {
-      setup:    "pref set tempTBo",
-      check: {
-        typed:  "pref set tempTBo",
-        hints:                  "ol <value>",
-        markup: "VVVVVVVVVIIIIIII",
-        status: "ERROR"
-      }
-    },
-    {
-      skipIf: options.isRemote,
-      setup:    "pref set tempTBool 4",
-      check: {
-        typed:  "pref set tempTBool 4",
-        markup: "VVVVVVVVVVVVVVVVVVVE",
-        status: "ERROR",
-        hints: ""
-      }
-    },
-    {
-      setup:    "pref set tempNumber 4",
-      check: {
-        typed:  "pref set tempNumber 4",
-        markup: "VVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        hints: ""
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_pref2.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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_pref2.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-var mockSettings = require("./mockSettings");
-
-exports.testPrefExec = function (options) {
-  if (options.requisition.system.commands.get("pref") == null) {
-    assert.log("Skipping test; missing pref command.");
-    return;
-  }
-
-  if (options.isRemote) {
-    assert.log("Skipping test which assumes local settings.");
-    return;
-  }
-
-  assert.is(mockSettings.tempNumber.value, 42, "set to 42");
-
-  return helpers.audit(options, [
-    {
-      // Delegated remote types can't transfer value types so we only test for
-      // the value of 'value' when we're local
-      skipIf: options.isRemote,
-      setup: "pref set tempNumber 4",
-      check: {
-        setting: { value: mockSettings.tempNumber },
-        args: { value: { value: 4 } }
-      }
-    },
-    {
-      setup:    "pref set tempNumber 4",
-      check: {
-        input:  "pref set tempNumber 4",
-        hints:                       "",
-        markup: "VVVVVVVVVVVVVVVVVVVVV",
-        cursor: 21,
-        current: "value",
-        status: "VALID",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "pref set" },
-          setting: {
-            arg: " tempNumber",
-            status: "VALID",
-            message: ""
-          },
-          value: {
-            arg: " 4",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: ""
-      },
-      post: function () {
-        assert.is(mockSettings.tempNumber.value, 4, "set to 4");
-      }
-    },
-    {
-      setup:    "pref reset tempNumber",
-      check: {
-        args: {
-          command: { name: "pref reset" },
-          setting: { value: mockSettings.tempNumber }
-        }
-      },
-      exec: {
-        output: ""
-      },
-      post: function () {
-        assert.is(mockSettings.tempNumber.value, 42, "reset to 42");
-      }
-    },
-    {
-      skipRemainingIf: function commandPrefListMissing() {
-        return options.requisition.system.commands.get("pref list") == null;
-      },
-      setup:    "pref list tempNum",
-      check: {
-        args: {
-          command: { name: "pref list" },
-          search: { value: "tempNum" }
-        }
-      },
-      exec: {
-        output: /tempNum/
-      }
-    },
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_remotews.js
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * 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_remotews.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-// testRemoteWs and testRemoteXhr are virtually identical.
-// Changes made here should be made there too.
-// They are kept separate to save adding complexity to the test system and so
-// to help us select the test that are available in different environments
-
-exports.testRemoteWebsocket = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.isRemote || options.isNode || options.isFirefox,
-      setup:    "remote ",
-      check: {
-        input:  "remote ",
-        hints:         "",
-        markup: "EEEEEEV",
-        cursor: 7,
-        current: "__command",
-        status: "ERROR",
-        options: [ ],
-        message: "Can't use 'remote'.",
-        predictions: [ ],
-        unassigned: [ ],
-      }
-    },
-    {
-      setup: "connect remote",
-      check: {
-        args: {
-          prefix: { value: "remote" },
-          url: { value: undefined }
-        }
-      },
-      exec: {
-        error: false
-      }
-    },
-    {
-      setup: "disconnect remote",
-      check: {
-        args: {
-          prefix: {
-            value: function (front) {
-              assert.is(front.prefix, "remote", "disconnecting remote");
-            }
-          }
-        }
-      },
-      exec: {
-        output: /^Removed [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup: "connect remote --method websocket",
-      check: {
-        args: {
-          prefix: { value: "remote" },
-          url: { value: undefined }
-        }
-      },
-      exec: {
-        error: false
-      }
-    },
-    {
-      setup: "disconnect remote",
-      check: {
-        args: {
-          prefix: {
-            value: function (front) {
-              assert.is(front.prefix, "remote", "disconnecting remote");
-            }
-          }
-        }
-      },
-      exec: {
-        output: /^Removed [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup: "connect remote --method websocket",
-      check: {
-        args: {
-          prefix: { value: "remote" },
-          url: { value: undefined }
-        }
-      },
-      exec: {
-        output: /^Added [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote ",
-      check: {
-        input:  "remote ",
-        // PhantomJS fails on this. Unsure why
-        // hints:         ' {',
-        markup: "IIIIIIV",
-        status: "ERROR",
-        optionsIncludes: [
-          "remote", "remote cd", "remote context", "remote echo",
-          "remote exec", "remote exit", "remote firefox", "remote help",
-          "remote intro", "remote make"
-        ],
-        message: "",
-        predictionsIncludes: [ "remote" ],
-        unassigned: [ ],
-      }
-    },
-    {
-      setup:    "remote echo hello world",
-      check: {
-        input:  "remote echo hello world",
-        hints:                         "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 23,
-        current: "message",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote echo" },
-          message: {
-            value: "hello world",
-            arg: " hello world",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "hello world",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote exec ls",
-      check: {
-        input:  "remote exec ls",
-        hints:                "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "command",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: {
-            value: "ls",
-            arg: " ls",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        // output: '', We can't rely on the contents of the FS
-        type: "output",
-        error: false
-      }
-    },
-    {
-      setup:    "remote sleep mistake",
-      check: {
-        input:  "remote sleep mistake",
-        hints:                      "",
-        markup: "VVVVVVVVVVVVVEEEEEEE",
-        cursor: 20,
-        current: "length",
-        status: "ERROR",
-        options: [ ],
-        message: 'Can\'t convert "mistake" to a number.',
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote sleep" },
-          length: {
-            value: undefined,
-            arg: " mistake",
-            status: "ERROR",
-            message: 'Can\'t convert "mistake" to a number.'
-          }
-        }
-      }
-    },
-    {
-      setup:    "remote sleep 1",
-      check: {
-        input:  "remote sleep 1",
-        hints:                 "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "length",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote sleep" },
-          length: { value: 1, arg: " 1", status: "VALID", message: "" }
-        }
-      },
-      exec: {
-        output: "Done",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote help ",
-      skipIf: true, // The help command is not remotable
-      check: {
-        input:  "remote help ",
-        hints:              "[search]",
-        markup: "VVVVVVVVVVVV",
-        cursor: 12,
-        current: "search",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote help" },
-          search: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote intro",
-      check: {
-        input:  "remote intro",
-        hints:              "",
-        markup: "VVVVVVVVVVVV",
-        cursor: 12,
-        current: "__command",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote intro" }
-        }
-      },
-      exec: {
-        output: [
-          /GCLI is an experiment/,
-          /F1\/Escape/
-        ],
-        type: "intro",
-        error: false
-      }
-    },
-    {
-      setup:    "context remote",
-      check: {
-        input:  "context remote",
-        // hints:                ' {',
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "prefix",
-        status: "VALID",
-        optionsContains: [
-          "remote", "remote cd", "remote echo", "remote exec", "remote exit",
-          "remote firefox", "remote help", "remote intro", "remote make"
-        ],
-        message: "",
-        // predictionsContains: [
-        //   'remote', 'remote cd', 'remote echo', 'remote exec', 'remote exit',
-        //   'remote firefox', 'remote help', 'remote intro', 'remote make',
-        //   'remote pref'
-        // ],
-        unassigned: [ ],
-        args: {
-          command: { name: "context" },
-          prefix: {
-            arg: " remote",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "Using remote as a command prefix",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "exec ls",
-      check: {
-        input:  "exec ls",
-        hints:         "",
-        markup: "VVVVVVV",
-        cursor: 7,
-        current: "command",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { value: "ls", arg: " ls", status: "VALID", message: "" },
-        }
-      },
-      exec: {
-        // output: '', We can't rely on the contents of the filesystem
-        type: "output",
-        error: false
-      }
-    },
-    {
-      setup:    "echo hello world",
-      check: {
-        input:  "echo hello world",
-        hints:                  "",
-        markup: "VVVVVVVVVVVVVVVV",
-        cursor: 16,
-        current: "message",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote echo" },
-          message: {
-            value: "hello world",
-            arg: " hello world",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: /^hello world$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "context",
-      check: {
-        input:  "context",
-        hints:         " [prefix]",
-        markup: "VVVVVVV",
-        cursor: 7,
-        current: "__command",
-        status: "VALID",
-        optionsContains: [
-          "remote", "remote cd", "remote echo", "remote exec", "remote exit",
-          "remote firefox", "remote help", "remote intro", "remote make"
-        ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "context" },
-          prefix: { value: undefined, arg: "", status: "VALID", message: "" }
-        }
-      },
-      exec: {
-        output: "Command prefix is unset",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "disconnect ",
-      check: {
-        input:  "disconnect ",
-        hints:             "remote",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "prefix",
-        status: "ERROR",
-        options: [ "remote" ],
-        message: "",
-        predictions: [ "remote" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "disconnect" },
-          prefix: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for 'prefix'."
-          }
-        }
-      }
-    },
-    {
-      setup:    "disconnect remote",
-      check: {
-        input:  "disconnect remote",
-        hints:                   "",
-        markup: "VVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        unassigned: [ ],
-        args: {
-          prefix: {
-            value: function (front) {
-              assert.is(front.prefix, "remote", "disconnecting remote");
-            },
-            arg: " remote",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: /^Removed [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote ",
-      check: {
-        input:  "remote ",
-        hints:         "",
-        markup: "EEEEEEV",
-        cursor: 7,
-        current: "__command",
-        status: "ERROR",
-        options: [ ],
-        message: "Can't use 'remote'.",
-        predictions: [ ],
-        unassigned: [ ],
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_remotexhr.js
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * 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_remotexhr.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-// testRemoteWs and testRemoteXhr are virtually identical.
-// Changes made here should be made there too.
-// They are kept separate to save adding complexity to the test system and so
-// to help us select the test that are available in different environments
-
-exports.testRemoteXhr = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.isRemote || options.isNode || options.isFirefox,
-      setup:    "remote ",
-      check: {
-        input:  "remote ",
-        hints:         "",
-        markup: "EEEEEEV",
-        cursor: 7,
-        current: "__command",
-        status: "ERROR",
-        options: [ ],
-        message: "Can't use 'remote'.",
-        predictions: [ ],
-        unassigned: [ ],
-      }
-    },
-    {
-      setup: "connect remote",
-      check: {
-        args: {
-          prefix: { value: "remote" },
-          url: { value: undefined }
-        }
-      },
-      exec: {
-        error: false
-      }
-    },
-    {
-      setup: "disconnect remote",
-      check: {
-        args: {
-          prefix: {
-            value: function (front) {
-              assert.is(front.prefix, "remote", "disconnecting remote");
-            }
-          }
-        }
-      },
-      exec: {
-        output: /^Removed [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup: "connect remote --method xhr",
-      check: {
-        args: {
-          prefix: { value: "remote" },
-          url: { value: undefined }
-        }
-      },
-      exec: {
-        error: false
-      }
-    },
-    {
-      setup: "disconnect remote",
-      check: {
-        args: {
-          prefix: {
-            value: function (front) {
-              assert.is(front.prefix, "remote", "disconnecting remote");
-            }
-          }
-        }
-      },
-      exec: {
-        output: /^Removed [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup: "connect remote --method xhr",
-      check: {
-        args: {
-          prefix: { value: "remote" },
-          url: { value: undefined }
-        }
-      },
-      exec: {
-        output: /^Added [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote ",
-      check: {
-        input:  "remote ",
-        // PhantomJS fails on this. Unsure why
-        // hints:         ' {',
-        markup: "IIIIIIV",
-        status: "ERROR",
-        optionsIncludes: [
-          "remote", "remote cd", "remote context", "remote echo",
-          "remote exec", "remote exit", "remote firefox", "remote help",
-          "remote intro", "remote make"
-        ],
-        message: "",
-        predictionsIncludes: [ "remote" ],
-        unassigned: [ ],
-      }
-    },
-    {
-      setup:    "remote echo hello world",
-      check: {
-        input:  "remote echo hello world",
-        hints:                         "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVV",
-        cursor: 23,
-        current: "message",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote echo" },
-          message: {
-            value: "hello world",
-            arg: " hello world",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "hello world",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote exec ls",
-      check: {
-        input:  "remote exec ls",
-        hints:                "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "command",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: {
-            value: "ls",
-            arg: " ls",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        // output: '', We can't rely on the contents of the FS
-        type: "output",
-        error: false
-      }
-    },
-    {
-      setup:    "remote sleep mistake",
-      check: {
-        input:  "remote sleep mistake",
-        hints:                      "",
-        markup: "VVVVVVVVVVVVVEEEEEEE",
-        cursor: 20,
-        current: "length",
-        status: "ERROR",
-        options: [ ],
-        message: 'Can\'t convert "mistake" to a number.',
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote sleep" },
-          length: {
-            value: undefined,
-            arg: " mistake",
-            status: "ERROR",
-            message: 'Can\'t convert "mistake" to a number.'
-          }
-        }
-      }
-    },
-    {
-      setup:    "remote sleep 1",
-      check: {
-        input:  "remote sleep 1",
-        hints:                 "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "length",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote sleep" },
-          length: { value: 1, arg: " 1", status: "VALID", message: "" }
-        }
-      },
-      exec: {
-        output: "Done",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote help ",
-      skipIf: true, // The help command is not remotable
-      check: {
-        input:  "remote help ",
-        hints:              "[search]",
-        markup: "VVVVVVVVVVVV",
-        cursor: 12,
-        current: "search",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote help" },
-          search: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote intro",
-      check: {
-        input:  "remote intro",
-        hints:              "",
-        markup: "VVVVVVVVVVVV",
-        cursor: 12,
-        current: "__command",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote intro" }
-        }
-      },
-      exec: {
-        output: [
-          /GCLI is an experiment/,
-          /F1\/Escape/
-        ],
-        type: "intro",
-        error: false
-      }
-    },
-    {
-      setup:    "context remote",
-      check: {
-        input:  "context remote",
-        // hints:                ' {',
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "prefix",
-        status: "VALID",
-        optionsContains: [
-          "remote", "remote cd", "remote echo", "remote exec", "remote exit",
-          "remote firefox", "remote help", "remote intro", "remote make"
-        ],
-        message: "",
-        // predictionsContains: [
-        //   'remote', 'remote cd', 'remote echo', 'remote exec', 'remote exit',
-        //   'remote firefox', 'remote help', 'remote intro', 'remote make',
-        //   'remote pref'
-        // ],
-        unassigned: [ ],
-        args: {
-          command: { name: "context" },
-          prefix: {
-            arg: " remote",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: "Using remote as a command prefix",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "exec ls",
-      check: {
-        input:  "exec ls",
-        hints:         "",
-        markup: "VVVVVVV",
-        cursor: 7,
-        current: "command",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { value: "ls", arg: " ls", status: "VALID", message: "" },
-        }
-      },
-      exec: {
-        // output: '', We can't rely on the contents of the filesystem
-        type: "output",
-        error: false
-      }
-    },
-    {
-      setup:    "echo hello world",
-      check: {
-        input:  "echo hello world",
-        hints:                  "",
-        markup: "VVVVVVVVVVVVVVVV",
-        cursor: 16,
-        current: "message",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "remote echo" },
-          message: {
-            value: "hello world",
-            arg: " hello world",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: /^hello world$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "context",
-      check: {
-        input:  "context",
-        hints:         " [prefix]",
-        markup: "VVVVVVV",
-        cursor: 7,
-        current: "__command",
-        status: "VALID",
-        optionsContains: [
-          "remote", "remote cd", "remote echo", "remote exec", "remote exit",
-          "remote firefox", "remote help", "remote intro", "remote make"
-        ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "context" },
-          prefix: { value: undefined, arg: "", status: "VALID", message: "" }
-        }
-      },
-      exec: {
-        output: "Command prefix is unset",
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "disconnect ",
-      check: {
-        input:  "disconnect ",
-        hints:             "remote",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "prefix",
-        status: "ERROR",
-        options: [ "remote" ],
-        message: "",
-        predictions: [ "remote" ],
-        unassigned: [ ],
-        args: {
-          command: { name: "disconnect" },
-          prefix: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE",
-            message: "Value required for 'prefix'."
-          }
-        }
-      }
-    },
-    {
-      setup:    "disconnect remote",
-      check: {
-        input:  "disconnect remote",
-        hints:                   "",
-        markup: "VVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        unassigned: [ ],
-        args: {
-          prefix: {
-            value: function (front) {
-              assert.is(front.prefix, "remote", "disconnecting remote");
-            },
-            arg: " remote",
-            status: "VALID",
-            message: ""
-          }
-        }
-      },
-      exec: {
-        output: /^Removed [0-9]* commands.$/,
-        type: "string",
-        error: false
-      }
-    },
-    {
-      setup:    "remote ",
-      check: {
-        input:  "remote ",
-        hints:         "",
-        markup: "EEEEEEV",
-        cursor: 7,
-        current: "__command",
-        status: "ERROR",
-        options: [ ],
-        message: "Can't use 'remote'.",
-        predictions: [ ],
-        unassigned: [ ],
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_resource.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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_resource.js");
-}
-
-// var helpers = require('./helpers');
-// var assert = require('../testharness/assert');
-
-var util = require("gcli/util/util");
-var resource = require("gcli/types/resource");
-var Status = require("gcli/types/types").Status;
-
-exports.testCommand = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsres ",
-      check: {
-        predictionsContains: [ "inline-css" ],
-      }
-    }
-  ]);
-};
-
-exports.testAllPredictions1 = function (options) {
-  if (options.isRemote) {
-    assert.log("Can't directly test remote types locally.");
-    return;
-  }
-
-  var context = options.requisition.conversionContext;
-  var resource = options.requisition.system.types.createType("resource");
-  return resource.getLookup(context).then(function (opts) {
-    assert.ok(opts.length > 1, "have all resources");
-
-    return util.promiseEach(opts, function (prediction) {
-      return checkPrediction(resource, prediction, context);
-    });
-  });
-};
-
-exports.testScriptPredictions = function (options) {
-  if (options.isRemote || options.isNode) {
-    assert.log("Can't directly test remote types locally.");
-    return;
-  }
-
-  var context = options.requisition.conversionContext;
-  var types = options.requisition.system.types;
-  var resource = types.createType({ name: "resource", include: "text/javascript" });
-  return resource.getLookup(context).then(function (opts) {
-    assert.ok(opts.length > 1, "have js resources");
-
-    return util.promiseEach(opts, function (prediction) {
-      return checkPrediction(resource, prediction, context);
-    });
-  });
-};
-
-exports.testStylePredictions = function (options) {
-  if (options.isRemote) {
-    assert.log("Can't directly test remote types locally.");
-    return;
-  }
-
-  var context = options.requisition.conversionContext;
-  var types = options.requisition.system.types;
-  var resource = types.createType({ name: "resource", include: "text/css" });
-  return resource.getLookup(context).then(function (opts) {
-    assert.ok(opts.length >= 1, "have css resources");
-
-    return util.promiseEach(opts, function (prediction) {
-      return checkPrediction(resource, prediction, context);
-    });
-  });
-};
-
-exports.testAllPredictions2 = function (options) {
-  if (options.isRemote) {
-    assert.log("Can't directly test remote types locally.");
-    return;
-  }
-
-  var context = options.requisition.conversionContext;
-  var types = options.requisition.system.types;
-
-  var scriptRes = types.createType({ name: "resource", include: "text/javascript" });
-  return scriptRes.getLookup(context).then(function (scriptOptions) {
-    var styleRes = types.createType({ name: "resource", include: "text/css" });
-    return styleRes.getLookup(context).then(function (styleOptions) {
-      var allRes = types.createType({ name: "resource" });
-      return allRes.getLookup(context).then(function (allOptions) {
-        assert.is(scriptOptions.length + styleOptions.length,
-                  allOptions.length,
-                  "split");
-      });
-    });
-  });
-};
-
-exports.testAllPredictions3 = function (options) {
-  if (options.isRemote) {
-    assert.log("Can't directly test remote types locally.");
-    return;
-  }
-
-  var context = options.requisition.conversionContext;
-  var types = options.requisition.system.types;
-  var res1 = types.createType({ name: "resource" });
-  return res1.getLookup(context).then(function (options1) {
-    var res2 = types.createType("resource");
-    return res2.getLookup(context).then(function (options2) {
-      assert.is(options1.length, options2.length, "type spec");
-    });
-  });
-};
-
-function checkPrediction(res, prediction, context) {
-  var name = prediction.name;
-  var value = prediction.value;
-
-  return res.parseString(name, context).then(function (conversion) {
-    assert.is(conversion.getStatus(), Status.VALID, "status VALID for " + name);
-    assert.is(conversion.value, value, "value for " + name);
-
-    assert.is(typeof value.loadContents, "function", "resource for " + name);
-    assert.is(typeof value.element, "object", "resource for " + name);
-
-    return Promise.resolve(res.stringify(value, context)).then(function (strung) {
-      assert.is(strung, name, "stringify for " + name);
-    });
-  });
-}
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_short.js
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * 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_short.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testBasic = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tshidden -v",
-      check: {
-        input:  "tshidden -v",
-        hints:             " <string>",
-        markup: "VVVVVVVVVII",
-        cursor: 11,
-        current: "visible",
-        status: "ERROR",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tshidden" },
-          visible: {
-            value: undefined,
-            arg: " -v",
-            status: "INCOMPLETE"
-          },
-          invisiblestring: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisibleboolean: {
-            value: false,
-            arg: "",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tshidden -v v",
-      check: {
-        input:  "tshidden -v v",
-        hints:               "",
-        markup: "VVVVVVVVVVVVV",
-        cursor: 13,
-        current: "visible",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tshidden" },
-          visible: {
-            value: "v",
-            arg: " -v v",
-            status: "VALID",
-            message: ""
-          },
-          invisiblestring: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisibleboolean: {
-            value: false,
-            arg: "",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tshidden -i i",
-      check: {
-        input:  "tshidden -i i",
-        hints:               " [options]",
-        markup: "VVVVVVVVVVVVV",
-        cursor: 13,
-        current: "invisiblestring",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tshidden" },
-          visible: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisiblestring: {
-            value: "i",
-            arg: " -i i",
-            status: "VALID",
-            message: ""
-          },
-          invisibleboolean: {
-            value: false,
-            arg: "",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tshidden -b",
-      check: {
-        input:  "tshidden -b",
-        hints:             " [options]",
-        markup: "VVVVVVVVVVV",
-        cursor: 11,
-        current: "invisibleboolean",
-        status: "VALID",
-        options: [ ],
-        message: "",
-        predictions: [ ],
-        unassigned: [ ],
-        args: {
-          command: { name: "tshidden" },
-          visible: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisiblestring: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisibleboolean: {
-            value: true,
-            arg: " -b",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tshidden -j",
-      check: {
-        input:  "tshidden -j",
-        hints:             " [options]",
-        markup: "VVVVVVVVVEE",
-        cursor: 11,
-        current: "__unassigned",
-        status: "ERROR",
-        options: [ ],
-        message: "Can't use '-j'.",
-        predictions: [ ],
-        unassigned: [ " -j" ],
-        args: {
-          command: { name: "tshidden" },
-          visible: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisiblestring: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisibleboolean: {
-            value: false,
-            arg: "",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    "tshidden -v jj -b --",
-      check: {
-        input:  "tshidden -v jj -b --",
-        hints:                      "",
-        markup: "VVVVVVVVVVVVVVVVVVEE",
-        cursor: 20,
-        current: "__unassigned",
-        status: "ERROR",
-        options: [ ],
-        message: "Can't use '--'.",
-        predictions: [ ],
-        unassigned: [ " --" ],
-        args: {
-          command: { name: "tshidden" },
-          visible: {
-            value: "jj",
-            arg: " -v jj",
-            status: "VALID",
-            message: ""
-          },
-          invisiblestring: {
-            value: undefined,
-            arg: "",
-            status: "VALID",
-            message: ""
-          },
-          invisibleboolean: {
-            value: true,
-            arg: " -b",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_spell.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2009 Panagiotis Astithas
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-"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_spell.js");
-}
-
-// var assert = require('../testharness/assert');
-var spell = require("gcli/util/spell");
-
-exports.testSpellerSimple = function (options) {
-  var alternatives = [
-    "window", "document", "InstallTrigger", "requirejs", "require", "define",
-    "console", "location", "constructor", "getInterface", "external", "sidebar"
-  ];
-
-  assert.is(spell.correct("document", alternatives), "document");
-  assert.is(spell.correct("documen", alternatives), "document");
-  assert.is(spell.correct("ocument", alternatives), "document");
-  assert.is(spell.correct("odcument", alternatives), "document");
-
-  assert.is(spell.correct("=========", alternatives), undefined);
-};
-
-exports.testRank = function (options) {
-  var distances = spell.rank("fred", [ "banana", "fred", "ed", "red", "FRED" ]);
-
-  assert.is(distances.length, 5, "rank length");
-
-  assert.is(distances[0].name, "fred", "fred name #0");
-  assert.is(distances[1].name, "FRED", "FRED name #1");
-  assert.is(distances[2].name, "red", "red name #2");
-  assert.is(distances[3].name, "ed", "ed name #3");
-  assert.is(distances[4].name, "banana", "banana name #4");
-
-  assert.is(distances[0].dist, 0, "fred dist 0");
-  assert.is(distances[1].dist, 4, "FRED dist 4");
-  assert.is(distances[2].dist, 10, "red dist 10");
-  assert.is(distances[3].dist, 20, "ed dist 20");
-  assert.is(distances[4].dist, 100, "banana dist 100");
-};
-
-exports.testRank2 = function (options) {
-  var distances = spell.rank("caps", [ "CAPS", "false" ]);
-  assert.is(JSON.stringify(distances),
-            '[{"name":"CAPS","dist":4},{"name":"false","dist":50}]',
-            'spell.rank("caps", [ "CAPS", "false" ]');
-};
-
-exports.testDistancePrefix = function (options) {
-  assert.is(spell.distancePrefix("fred", "freddy"), 0, "distancePrefix fred");
-  assert.is(spell.distancePrefix("FRED", "freddy"), 4, "distancePrefix FRED");
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_split.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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_split.js");
-}
-
-// var assert = require('../testharness/assert');
-
-var cli = require("gcli/cli");
-
-exports.testSplitSimple = function (options) {
-  var args = cli.tokenize("s");
-  options.requisition._split(args);
-  assert.is(args.length, 0);
-  assert.is(options.requisition.commandAssignment.arg.text, "s");
-};
-
-exports.testFlatCommand = function (options) {
-  var args = cli.tokenize("tsv");
-  options.requisition._split(args);
-  assert.is(args.length, 0);
-  assert.is(options.requisition.commandAssignment.value.name, "tsv");
-
-  args = cli.tokenize("tsv a b");
-  options.requisition._split(args);
-  assert.is(options.requisition.commandAssignment.value.name, "tsv");
-  assert.is(args.length, 2);
-  assert.is(args[0].text, "a");
-  assert.is(args[1].text, "b");
-};
-
-exports.testJavascript = function (options) {
-  if (!options.requisition.system.commands.get("{")) {
-    assert.log("Skipping testJavascript because { is not registered");
-    return;
-  }
-
-  var args = cli.tokenize("{");
-  options.requisition._split(args);
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "");
-  assert.is(options.requisition.commandAssignment.arg.text, "");
-  assert.is(options.requisition.commandAssignment.value.name, "{");
-};
-
-// BUG 663081 - add tests for sub commands
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_string.js
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * 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_string.js");
-}
-
-// var helpers = require('./helpers');
-
-exports.testNewLine = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "echo a\\nb",
-      check: {
-        input:  "echo a\\nb",
-        hints:            "",
-        markup: "VVVVVVVVV",
-        cursor: 9,
-        current: "message",
-        status: "VALID",
-        args: {
-          command: { name: "echo" },
-          message: {
-            value: "a\nb",
-            arg: " a\\nb",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testTab = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "echo a\\tb",
-      check: {
-        input:  "echo a\\tb",
-        hints:            "",
-        markup: "VVVVVVVVV",
-        cursor: 9,
-        current: "message",
-        status: "VALID",
-        args: {
-          command: { name: "echo" },
-          message: {
-            value: "a\tb",
-            arg: " a\\tb",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testEscape = function (options) {
-  return helpers.audit(options, [
-    {
-      // What's typed is actually:
-      //         tsrsrsr a\\ b c
-      setup:    "tsrsrsr a\\\\ b c",
-      check: {
-        input:  "tsrsrsr a\\\\ b c",
-        hints:                 "",
-        markup: "VVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: { value: "a\\", arg: " a\\\\", status: "VALID", message: "" },
-          p2: { value: "b", arg: " b", status: "VALID", message: "" },
-          p3: { value: "c", arg: " c", status: "VALID", message: "" },
-        }
-      }
-    },
-    {
-      // What's typed is actually:
-      //         tsrsrsr abc\\ndef asd asd
-      setup:    "tsrsrsr abc\\\\ndef asd asd",
-      check: {
-        input:  "tsrsrsr abc\\\\ndef asd asd",
-        hints:                           "",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVV",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: {
-            value: "abc\\ndef",
-            arg: " abc\\\\ndef",
-            status: "VALID",
-            message: ""
-          },
-          p2: { value: "asd", arg: " asd", status: "VALID", message: "" },
-          p3: { value: "asd", arg: " asd", status: "VALID", message: "" },
-        }
-      }
-    }
-  ]);
-};
-
-exports.testBlank = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    'tsrsrsr a "" c',
-      check: {
-        input:  'tsrsrsr a "" c',
-        hints:                "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "p3",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: {
-            value: "a",
-            arg: " a",
-            status: "VALID",
-            message: ""
-          },
-          p2: {
-            value: undefined,
-            arg: ' ""',
-            status: "INCOMPLETE"
-          },
-          p3: {
-            value: "c",
-            arg: " c",
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    },
-    {
-      setup:    'tsrsrsr a b ""',
-      check: {
-        input:  'tsrsrsr a b ""',
-        hints:                "",
-        markup: "VVVVVVVVVVVVVV",
-        cursor: 14,
-        current: "p3",
-        status: "VALID",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: {
-            value: "a",
-            arg: " a",
-            status:"VALID",
-            message: "" },
-          p2: {
-            value: "b",
-            arg: " b",
-            status: "VALID",
-            message: ""
-          },
-          p3: {
-            value: "",
-            arg: ' ""',
-            status: "VALID",
-            message: ""
-          }
-        }
-      }
-    }
-  ]);
-};
-
-exports.testBlankWithParam = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "tsrsrsr  a --p3",
-      check: {
-        input:  "tsrsrsr  a --p3",
-        hints:                 " <string> <p2>",
-        markup: "VVVVVVVVVVVVVVV",
-        cursor: 15,
-        current: "p3",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: { value: "a", arg: "  a", status: "VALID", message: "" },
-          p2: { value: undefined, arg: "", status: "INCOMPLETE" },
-          p3: { value: "", arg: " --p3", status: "VALID", message: "" },
-        }
-      }
-    },
-    {
-      setup:    "tsrsrsr  a --p3 ",
-      check: {
-        input:  "tsrsrsr  a --p3 ",
-        hints:                  "<string> <p2>",
-        markup: "VVVVVVVVVVVVVVVV",
-        cursor: 16,
-        current: "p3",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: { value: "a", arg: "  a", status: "VALID", message: "" },
-          p2: { value: undefined, arg: "", status: "INCOMPLETE" },
-          p3: { value: "", arg: " --p3 ", status: "VALID", message: "" },
-        }
-      }
-    },
-    {
-      setup:    'tsrsrsr  a --p3 "',
-      check: {
-        input:  'tsrsrsr  a --p3 "',
-        hints:                   " <p2>",
-        markup: "VVVVVVVVVVVVVVVVV",
-        cursor: 17,
-        current: "p3",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: { value: "a", arg: "  a", status: "VALID", message: "" },
-          p2: { value: undefined, arg: "", status: "INCOMPLETE" },
-          p3: { value: "", arg: ' --p3 "', status: "VALID", message: "" },
-        }
-      }
-    },
-    {
-      setup:    'tsrsrsr  a --p3 ""',
-      check: {
-        input:  'tsrsrsr  a --p3 ""',
-        hints:                    " <p2>",
-        markup: "VVVVVVVVVVVVVVVVVV",
-        cursor: 18,
-        current: "p3",
-        status: "ERROR",
-        message: "",
-        args: {
-          command: { name: "tsrsrsr" },
-          p1: { value: "a", arg: "  a", status: "VALID", message: "" },
-          p2: { value: undefined, arg: "", status: "INCOMPLETE" },
-          p3: { value: "", arg: ' --p3 ""', status: "VALID", message: "" },
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_tokenize.js
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * 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_tokenize.js");
-}
-
-// var assert = require('../testharness/assert');
-var cli = require("gcli/cli");
-
-exports.testBlanks = function (options) {
-  var args;
-
-  args = cli.tokenize("");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "");
-  assert.is(args[0].prefix, "");
-  assert.is(args[0].suffix, "");
-
-  args = cli.tokenize(" ");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "");
-  assert.is(args[0].prefix, " ");
-  assert.is(args[0].suffix, "");
-};
-
-exports.testTokSimple = function (options) {
-  var args;
-
-  args = cli.tokenize("s");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "s");
-  assert.is(args[0].prefix, "");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "Argument");
-
-  args = cli.tokenize("s s");
-  assert.is(args.length, 2);
-  assert.is(args[0].text, "s");
-  assert.is(args[0].prefix, "");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "Argument");
-  assert.is(args[1].text, "s");
-  assert.is(args[1].prefix, " ");
-  assert.is(args[1].suffix, "");
-  assert.is(args[1].type, "Argument");
-};
-
-exports.testJavascript = function (options) {
-  var args;
-
-  args = cli.tokenize("{x}");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "x");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{ x }");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "x");
-  assert.is(args[0].prefix, "{ ");
-  assert.is(args[0].suffix, " }");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{x} {y}");
-  assert.is(args.length, 2);
-  assert.is(args[0].text, "x");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-  assert.is(args[1].text, "y");
-  assert.is(args[1].prefix, " {");
-  assert.is(args[1].suffix, "}");
-  assert.is(args[1].type, "ScriptArgument");
-
-  args = cli.tokenize("{x}{y}");
-  assert.is(args.length, 2);
-  assert.is(args[0].text, "x");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-  assert.is(args[1].text, "y");
-  assert.is(args[1].prefix, "{");
-  assert.is(args[1].suffix, "}");
-  assert.is(args[1].type, "ScriptArgument");
-
-  args = cli.tokenize("{");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{ ");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "");
-  assert.is(args[0].prefix, "{ ");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{x");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "x");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "ScriptArgument");
-};
-
-exports.testRegularNesting = function (options) {
-  var args;
-
-  args = cli.tokenize('{"x"}');
-  assert.is(args.length, 1);
-  assert.is(args[0].text, '"x"');
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{'x'}");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "'x'");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize('"{x}"');
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "{x}");
-  assert.is(args[0].prefix, '"');
-  assert.is(args[0].suffix, '"');
-  assert.is(args[0].type, "Argument");
-
-  args = cli.tokenize("'{x}'");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "{x}");
-  assert.is(args[0].prefix, "'");
-  assert.is(args[0].suffix, "'");
-  assert.is(args[0].type, "Argument");
-};
-
-exports.testDeepNesting = function (options) {
-  var args;
-
-  args = cli.tokenize("{{}}");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "{}");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{{x} {y}}");
-  assert.is(args.length, 1);
-  assert.is(args[0].text, "{x} {y}");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  args = cli.tokenize("{{w} {{{x}}}} {y} {{{z}}}");
-
-  assert.is(args.length, 3);
-
-  assert.is(args[0].text, "{w} {{{x}}}");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  assert.is(args[1].text, "y");
-  assert.is(args[1].prefix, " {");
-  assert.is(args[1].suffix, "}");
-  assert.is(args[1].type, "ScriptArgument");
-
-  assert.is(args[2].text, "{{z}}");
-  assert.is(args[2].prefix, " {");
-  assert.is(args[2].suffix, "}");
-  assert.is(args[2].type, "ScriptArgument");
-
-  args = cli.tokenize("{{w} {{{x}}} {y} {{{z}}}");
-
-  assert.is(args.length, 1);
-
-  assert.is(args[0].text, "{w} {{{x}}} {y} {{{z}}}");
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "ScriptArgument");
-};
-
-exports.testStrangeNesting = function (options) {
-  var args;
-
-  // Note: When we get real JS parsing this should break
-  args = cli.tokenize('{"x}"}');
-
-  assert.is(args.length, 2);
-
-  assert.is(args[0].text, '"x');
-  assert.is(args[0].prefix, "{");
-  assert.is(args[0].suffix, "}");
-  assert.is(args[0].type, "ScriptArgument");
-
-  assert.is(args[1].text, "}");
-  assert.is(args[1].prefix, '"');
-  assert.is(args[1].suffix, "");
-  assert.is(args[1].type, "Argument");
-};
-
-exports.testComplex = function (options) {
-  var args;
-
-  args = cli.tokenize(" 1234  '12 34'");
-
-  assert.is(args.length, 2);
-
-  assert.is(args[0].text, "1234");
-  assert.is(args[0].prefix, " ");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "Argument");
-
-  assert.is(args[1].text, "12 34");
-  assert.is(args[1].prefix, "  '");
-  assert.is(args[1].suffix, "'");
-  assert.is(args[1].type, "Argument");
-
-  args = cli.tokenize('12\'34 "12 34" \\'); // 12'34 "12 34" \
-
-  assert.is(args.length, 3);
-
-  assert.is(args[0].text, "12'34");
-  assert.is(args[0].prefix, "");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "Argument");
-
-  assert.is(args[1].text, "12 34");
-  assert.is(args[1].prefix, ' "');
-  assert.is(args[1].suffix, '"');
-  assert.is(args[1].type, "Argument");
-
-  assert.is(args[2].text, "\\");
-  assert.is(args[2].prefix, " ");
-  assert.is(args[2].suffix, "");
-  assert.is(args[2].type, "Argument");
-};
-
-exports.testPathological = function (options) {
-  var args;
-
-  args = cli.tokenize('a\\ b \\t\\n\\r \\\'x\\\" \'d'); // a_b \t\n\r \'x\" 'd
-
-  assert.is(args.length, 4);
-
-  assert.is(args[0].text, "a\\ b");
-  assert.is(args[0].prefix, "");
-  assert.is(args[0].suffix, "");
-  assert.is(args[0].type, "Argument");
-
-  assert.is(args[1].text, "\\t\\n\\r");
-  assert.is(args[1].prefix, " ");
-  assert.is(args[1].suffix, "");
-  assert.is(args[1].type, "Argument");
-
-  assert.is(args[2].text, '\\\'x\\"');
-  assert.is(args[2].prefix, " ");
-  assert.is(args[2].suffix, "");
-  assert.is(args[2].type, "Argument");
-
-  assert.is(args[3].text, "d");
-  assert.is(args[3].prefix, " '");
-  assert.is(args[3].suffix, "");
-  assert.is(args[3].type, "Argument");
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_tooltip.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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_tooltip.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.testActivate = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    " ",
-      check: {
-        input:  " ",
-        hints:   "",
-        markup: "V",
-        cursor: 1,
-        current: "__command",
-        status: "ERROR",
-        message:  "",
-        unassigned: [ ],
-        outputState: "false:default",
-        tooltipState: "false:default"
-      }
-    },
-    {
-      setup:    "tsb ",
-      check: {
-        input:  "tsb ",
-        hints:      "false",
-        markup: "VVVV",
-        cursor: 4,
-        current: "toggle",
-        status: "VALID",
-        options: [ "false", "true" ],
-        message:  "",
-        predictions: [ "false", "true" ],
-        unassigned: [ ],
-        outputState: "false:default",
-        tooltipState: "true:importantFieldFlag"
-      }
-    },
-    {
-      setup:    "tsb t",
-      check: {
-        input:  "tsb t",
-        hints:       "rue",
-        markup: "VVVVI",
-        cursor: 5,
-        current: "toggle",
-        status: "ERROR",
-        options: [ "true" ],
-        message:  "",
-        predictions: [ "true" ],
-        unassigned: [ ],
-        outputState: "false:default",
-        tooltipState: "true:importantFieldFlag"
-      }
-    },
-    {
-      setup:    "tsb tt",
-      check: {
-        input:  "tsb tt",
-        hints:        " -> true",
-        markup: "VVVVII",
-        cursor: 6,
-        current: "toggle",
-        status: "ERROR",
-        options: [ "true" ],
-        message: "",
-        predictions: [ "true" ],
-        unassigned: [ ],
-        outputState: "false:default",
-        tooltipState: "true:importantFieldFlag"
-      }
-    },
-    {
-      setup:    "wxqy",
-      check: {
-        input:  "wxqy",
-        hints:      "",
-        markup: "EEEE",
-        cursor: 4,
-        current: "__command",
-        status: "ERROR",
-        options: [ ],
-        message:  "Can't use 'wxqy'.",
-        predictions: [ ],
-        unassigned: [ ],
-        outputState: "false:default",
-        tooltipState: "true:isError"
-      }
-    },
-    {
-      setup:    "",
-      check: {
-        input:  "",
-        hints:  "",
-        markup: "",
-        cursor: 0,
-        current: "__command",
-        status: "ERROR",
-        message: "",
-        unassigned: [ ],
-        outputState: "false:default",
-        tooltipState: "false:default"
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_types.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * 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_types.js");
-}
-
-// var assert = require('../testharness/assert');
-var util = require("gcli/util/util");
-
-function forEachType(options, templateTypeSpec, callback) {
-  var types = options.requisition.system.types;
-  return util.promiseEach(types.getTypeNames(), function (name) {
-    var typeSpec = {};
-    util.copyProperties(templateTypeSpec, typeSpec);
-    typeSpec.name = name;
-    typeSpec.requisition = options.requisition;
-
-    // Provide some basic defaults to help selection/delegate/array work
-    if (name === "selection") {
-      typeSpec.data = [ "a", "b" ];
-    }
-    else if (name === "delegate") {
-      typeSpec.delegateType = function () {
-        return "string";
-      };
-    }
-    else if (name === "array") {
-      typeSpec.subtype = "string";
-    }
-    else if (name === "remote") {
-      return;
-    }
-    else if (name === "union") {
-      typeSpec.alternatives = [{ name: "string" }];
-    }
-    else if (options.isRemote) {
-      if (name === "node" || name === "nodelist") {
-        return;
-      }
-    }
-
-    var type = types.createType(typeSpec);
-    var reply = callback(type);
-    return Promise.resolve(reply);
-  });
-}
-
-exports.testDefault = function (options) {
-  return forEachType(options, {}, function (type) {
-    var context = options.requisition.executionContext;
-    var blank = type.getBlank(context).value;
-
-    // boolean and array types are exempt from needing undefined blank values
-    if (type.name === "boolean") {
-      assert.is(blank, false, "blank boolean is false");
-    }
-    else if (type.name === "array") {
-      assert.ok(Array.isArray(blank), "blank array is array");
-      assert.is(blank.length, 0, "blank array is empty");
-    }
-    else if (type.name === "nodelist") {
-      assert.ok(typeof blank.item, "function", "blank.item is function");
-      assert.is(blank.length, 0, "blank nodelist is empty");
-    }
-    else {
-      assert.is(blank, undefined, "default defined for " + type.name);
-    }
-  });
-};
-
-exports.testNullDefault = function (options) {
-  var context = null; // Is this test still valid with a null context?
-
-  return forEachType(options, { defaultValue: null }, function (type) {
-    var reply = type.stringify(null, context);
-    return Promise.resolve(reply).then(function (str) {
-      assert.is(str, "", "stringify(null) for " + type.name);
-    });
-  });
-};
-
-exports.testGetSpec = function (options) {
-  return forEachType(options, {}, function (type) {
-    if (type.name === "param") {
-      return;
-    }
-
-    var spec = type.getSpec("cmd", "param");
-    assert.ok(spec != null, "non null spec for " + type.name);
-
-    var str = JSON.stringify(spec);
-    assert.ok(str != null, "serializable spec for " + type.name);
-
-    var example = options.requisition.system.types.createType(spec);
-    assert.ok(example != null, "creatable spec for " + type.name);
-  });
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_union.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * 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_union.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.testDefault = function (options) {
-  return helpers.audit(options, [
-    {
-      setup:    "unionc1",
-      check: {
-        input:  "unionc1",
-        markup: "VVVVVVV",
-        hints:         " <first>",
-        status: "ERROR",
-        args: {
-          first: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "unionc1 three",
-      check: {
-        input:  "unionc1 three",
-        markup: "VVVVVVVVVVVVV",
-        hints:               "",
-        status: "VALID",
-        args: {
-          first: {
-            value: function (data) {
-              assert.is(Object.keys(data).length, 2, "union3 Object.keys");
-              assert.is(data.type, "string", "union3 val type");
-              assert.is(data.string, "three", "union3 val string");
-            },
-            arg: " three",
-            status: "VALID"
-          }
-        }
-      },
-      exec: {
-        output: [
-          /"type": ?"string"/,
-          /"string": ?"three"/
-        ]
-      },
-      post: function (output, text) {
-        var data = output.data.first;
-        assert.is(Object.keys(data).length, 2, "union3 Object.keys");
-        assert.is(data.type, "string", "union3 val type");
-        assert.is(data.string, "three", "union3 val string");
-      }
-    },
-    {
-      setup:    "unionc1 one",
-      check: {
-        input:  "unionc1 one",
-        markup: "VVVVVVVVVVV",
-        hints:             "",
-        status: "VALID",
-        args: {
-          first: {
-            value: function (data) {
-              assert.is(Object.keys(data).length, 2, "union1 Object.keys");
-              assert.is(data.type, "selection", "union1 val type");
-              assert.is(data.selection, 1, "union1 val selection");
-            },
-            arg: " one",
-            status: "VALID"
-          }
-        }
-      },
-      exec: {
-        output: [
-          /"type": ?"selection"/,
-          /"selection": ?1/
-        ]
-      },
-      post: function (output, text) {
-        var data = output.data.first;
-        assert.is(Object.keys(data).length, 2, "union1 Object.keys");
-        assert.is(data.type, "selection", "union1 val type");
-        assert.is(data.selection, 1, "union1 val selection");
-      }
-    },
-    {
-      skipIf: options.isPhantomjs, // PhantomJS gets predictions wrong
-      setup:    "unionc1 5",
-      check: {
-        input:  "unionc1 5",
-        markup: "VVVVVVVVV",
-        hints:           " -> two",
-        predictions: [ "two" ],
-        status: "VALID",
-        args: {
-          first: {
-            value: function (data) {
-              assert.is(Object.keys(data).length, 2, "union5 Object.keys");
-              assert.is(data.type, "number", "union5 val type");
-              assert.is(data.number, 5, "union5 val number");
-            },
-            arg: " 5",
-            status: "VALID"
-          }
-        }
-      },
-      exec: {
-        output: [
-          /"type": ?"number"/,
-          /"number": ?5/
-        ]
-      },
-      post: function (output, text) {
-        var data = output.data.first;
-        assert.is(Object.keys(data).length, 2, "union5 Object.keys");
-        assert.is(data.type, "number", "union5 val type");
-        assert.is(data.number, 5, "union5 val number");
-      }
-    },
-    {
-      skipIf: options.isPhantomjs, // PhantomJS URL type is broken
-      setup:    "unionc2 on",
-      check: {
-        input:  "unionc2 on",
-        hints:            "e",
-        markup: "VVVVVVVVII",
-        current: "first",
-        status: "ERROR",
-        predictionsContains: [
-          "one",
-          "http://on/",
-          "https://on/"
-        ],
-        args: {
-          command: { name: "unionc2" },
-          first: {
-            value: undefined,
-            arg: " on",
-            status: "INCOMPLETE",
-            message: "Can\u2019t use \u2018on\u2019."
-          },
-        }
-      }
-    }
-  ]);
-};
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_gcli_url.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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_url.js");
-}
-
-// var assert = require('../testharness/assert');
-// var helpers = require('./helpers');
-
-exports.testDefault = function (options) {
-  return helpers.audit(options, [
-    {
-      skipRemainingIf: options.isPhantomjs, // PhantomJS URL type is broken
-      setup:    "urlc",
-      check: {
-        input:  "urlc",
-        markup: "VVVV",
-        hints:        " <url>",
-        status: "ERROR",
-        args: {
-          url: {
-            value: undefined,
-            arg: "",
-            status: "INCOMPLETE"
-          }
-        }
-      }
-    },
-    {
-      setup:    "urlc example",
-      check: {
-        input:  "urlc example",
-        markup: "VVVVVIIIIIII",
-        hints:              " -> http://example/",
-        predictions: [
-          "http://example/",
-          "https://example/",
-          "http://localhost:9999/example"
-        ],
-        status: "ERROR",
-        args: {
-          url: {
-            value: undefined,
-            arg: " example",
-            status: "INCOMPLETE"
-          }
-        }
-      },
-    },
-    {
-      setup:    "urlc example.com/",
-      check: {
-        input:  "urlc example.com/",
-        markup: "VVVVVIIIIIIIIIIII",
-        hints:                   " -> http://example.com/",
-        status: "ERROR",
-        args: {
-          url: {
-            value: undefined,
-            arg: " example.com/",
-            status: "INCOMPLETE"
-          }
-        }
-      },
-    },
-    {
-      setup:    "urlc http://example.com/index?q=a#hash",
-      check: {
-        input:  "urlc http://example.com/index?q=a#hash",
-        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
-        hints:                                        "",
-        status: "VALID",
-        args: {
-          url: {
-            value: function (data) {
-              assert.is(data.hash, "#hash", "url hash");
-            },
-            arg: " http://example.com/index?q=a#hash",
-            status: "VALID"
-          }
-        }
-      },
-      exec: { output: /"url": ?/ }
-    }
-  ]);
-};
--- a/devtools/client/commandline/test/helpers.js
+++ b/devtools/client/commandline/test/helpers.js
@@ -32,72 +32,16 @@ var { helpers, assert } = (function () {
   var cli = require("gcli/cli");
   var KeyEvent = require("gcli/util/util").KeyEvent;
 
   const { GcliFront } = require("devtools/shared/fronts/gcli");
 
 /**
  * See notes in helpers.checkOptions()
  */
-  var createDeveloperToolbarAutomator = function (toolbar) {
-    var automator = {
-      setInput: function (typed) {
-        return toolbar.inputter.setInput(typed);
-      },
-
-      setCursor: function (cursor) {
-        return toolbar.inputter.setCursor(cursor);
-      },
-
-      focus: function () {
-        return toolbar.inputter.focus();
-      },
-
-      fakeKey: function (keyCode) {
-        var fakeEvent = {
-          keyCode: keyCode,
-          preventDefault: function () { },
-          timeStamp: new Date().getTime()
-        };
-
-        toolbar.inputter.onKeyDown(fakeEvent);
-
-        if (keyCode === KeyEvent.DOM_VK_BACK_SPACE) {
-          var input = toolbar.inputter.element;
-          input.value = input.value.slice(0, -1);
-        }
-
-        return toolbar.inputter.handleKeyUp(fakeEvent);
-      },
-
-      getInputState: function () {
-        return toolbar.inputter.getInputState();
-      },
-
-      getCompleterTemplateData: function () {
-        return toolbar.completer._getCompleterTemplateData();
-      },
-
-      getErrorMessage: function () {
-        return toolbar.tooltip.errorEle.textContent;
-      }
-    };
-
-    Object.defineProperty(automator, "focusManager", {
-      get: function () { return toolbar.focusManager; },
-      enumerable: true
-    });
-
-    Object.defineProperty(automator, "field", {
-      get: function () { return toolbar.tooltip.field; },
-      enumerable: true
-    });
-
-    return automator;
-  };
 
 /**
  * Warning: For use with Firefox Mochitests only.
  *
  * Open a new tab at a URL and call a callback on load, and then tidy up when
  * the callback finishes.
  * The function will be passed a set of test options, and will usually return a
  * promise to indicate that the tab can be cleared up. (To be formal, we call
@@ -195,37 +139,16 @@ var { helpers, assert } = (function () {
 
     delete options.chromeWindow;
     delete options.isFirefox;
 
     return Promise.resolve(undefined);
   };
 
 /**
- * Open the developer toolbar in a tab
- * @param options Object to which we add properties describing the developer
- * toolbar. The following properties are added:
- * - automator
- * - requisition
- * @return A promise which resolves to the options object when the 'load' event
- * happens on the new tab
- */
-  helpers.openToolbar = function (options) {
-    options = options || {};
-    options.chromeWindow = options.chromeWindow || window;
-
-    var toolbar = gDevToolsBrowser.getDeveloperToolbar(options.chromeWindow);
-    return toolbar.show(true).then(function () {
-      options.automator = createDeveloperToolbarAutomator(toolbar);
-      options.requisition = toolbar.requisition;
-      return options;
-    });
-  };
-
-/**
  * Navigate the current tab to a URL
  */
   helpers.navigate = async function(url, options) {
     options = options || {};
     options.chromeWindow = options.chromeWindow || window;
     options.tab = options.tab || options.chromeWindow.gBrowser.selectedTab;
 
     var tabbrowser = options.chromeWindow.gBrowser;
@@ -234,29 +157,16 @@ var { helpers, assert } = (function () {
     let onLoaded = BrowserTestUtils.browserLoaded(options.browser);
     options.browser.loadURI(url);
     await onLoaded;
 
     return options;
   };
 
 /**
- * Undo the effects of |helpers.openToolbar|
- * @param options The options object passed to |helpers.openToolbar|
- * @return A promise resolved (with undefined) when the toolbar is closed
- */
-  helpers.closeToolbar = function (options) {
-    var toolbar = gDevToolsBrowser.getDeveloperToolbar(options.chromeWindow).hide();
-    return toolbar.then(function () {
-      delete options.automator;
-      delete options.requisition;
-    });
-  };
-
-/**
  * A helper to work with Task.spawn so you can do:
  *   return Task.spawn(realTestFunc).then(finish, helpers.handleError);
  */
   helpers.handleError = function (ex) {
     console.error(ex);
     ok(false, ex);
     finish();
   };
@@ -312,46 +222,16 @@ var { helpers, assert } = (function () {
         functionWithLastParamCallback.apply(scope, args);
       });
     };
   };
 
 /**
  * Warning: For use with Firefox Mochitests only.
  *
- * As addTab, but that also opens the developer toolbar. In addition a new
- * 'automator' property is added to the options object which uses the
- * developer toolbar
- */
-  helpers.addTabWithToolbar = function (url, callback, options) {
-    return helpers.addTab(url, function (innerOptions) {
-      var win = innerOptions.chromeWindow;
-
-      var toolbar = gDevToolsBrowser.getDeveloperToolbar(win);
-      return toolbar.show(true).then(function () {
-        innerOptions.automator = createDeveloperToolbarAutomator(toolbar);
-        innerOptions.requisition = toolbar.requisition;
-
-        var reply = callback.call(null, innerOptions);
-
-        return Promise.resolve(reply).catch(function (error) {
-          ok(false, error);
-          console.error(error);
-        }).then(function () {
-          toolbar.hide().then(function () {
-            delete innerOptions.automator;
-          });
-        });
-      });
-    }, options);
-  };
-
-/**
- * Warning: For use with Firefox Mochitests only.
- *
  * Run a set of test functions stored in the values of the 'exports' object
  * functions stored under setup/shutdown will be run at the start/end of the
  * sequence of tests.
  * A test will be considered finished when its return value is resolved.
  * @param options An object to be passed to the test functions
  * @param tests An object containing named test functions
  * @return a promise which will be resolved when all tests have been run and
  * their return values resolved
@@ -404,86 +284,16 @@ var { helpers, assert } = (function () {
     deferred.promise = new Promise(function (resolve, reject) {
       deferred.resolve = resolve;
       deferred.reject = reject;
     });
     return deferred;
   };
 
 /**
- * This does several actions associated with running a GCLI test in mochitest
- * 1. Create a new tab containing basic markup for GCLI tests
- * 2. Open the developer toolbar
- * 3. Register the mock commands with the server process
- * 4. Wait for the proxy commands to be auto-regitstered with the client
- * 5. Register the mock converters with the client process
- * 6. Run all the tests
- * 7. Tear down all the setup
- */
-  helpers.runTestModule = function (exports, name) {
-    return (async function() {
-      const uri = "data:text/html;charset=utf-8," +
-                "<style>div{color:red;}</style>" +
-                "<div id='gcli-root'>" + name + "</div>";
-
-      const options = await helpers.openTab(uri);
-      options.isRemote = true;
-
-      await helpers.openToolbar(options);
-
-      const system = options.requisition.system;
-
-    // Register a one time listener with the local set of commands
-      const addedDeferred = defer();
-      const removedDeferred = defer();
-      let state = "preAdd"; // Then 'postAdd' then 'postRemove'
-
-      system.commands.onCommandsChange.add(function (ev) {
-        if (system.commands.get("tsslow") != null) {
-          if (state === "preAdd") {
-            addedDeferred.resolve();
-            state = "postAdd";
-          }
-        }
-        else {
-          if (state === "postAdd") {
-            removedDeferred.resolve();
-            state = "postRemove";
-          }
-        }
-      });
-
-    // Send a message to add the commands to the content process
-      const front = await GcliFront.create(options.target);
-      await front._testOnlyAddItemsByModule(MOCK_COMMANDS_URI);
-
-    // This will cause the local set of commands to be updated with the
-    // command proxies, wait for that to complete.
-      await addedDeferred.promise;
-
-    // Now we need to add the converters to the local GCLI
-      const converters = mockCommands.items.filter(item => item.item === "converter");
-      system.addItems(converters);
-
-    // Next run the tests
-      await helpers.runTests(options, exports);
-
-    // Finally undo the mock commands and converters
-      system.removeItems(converters);
-      const removePromise = system.commands.onCommandsChange.once();
-      await front._testOnlyRemoveItemsByModule(MOCK_COMMANDS_URI);
-      await removedDeferred.promise;
-
-    // And close everything down
-      await helpers.closeToolbar(options);
-      await helpers.closeTab(options);
-    })().then(finish, helpers.handleError);
-  };
-
-/**
  * Ensure that the options object is setup correctly
  * options should contain an automator object that looks like this:
  * {
  *   getInputState: function() { ... },
  *   setCursor: function(cursor) { ... },
  *   getCompleterTemplateData: function() { ... },
  *   focus: function() { ... },
  *   getErrorMessage: function() { ... },