Bug 1461970 - Remove gcli tests using helpers.runTestModule (i.e all of them) and cleanup helpers.js from DeveloperToolbar usages. r=jryans
authorAlexandre Poirot <poirot.alex@gmail.com>
Wed, 21 Mar 2018 09:02:02 -0700
changeset 418818 6a62f53c809889650519a094bd4d84cd44466194
parent 418817 4379cbe42ce38fd75eda993a068eeb57e3974056
child 418819 fe9e01a0dce79382fc8b1a6d9de88ed3697448d0
push id34014
push useraciure@mozilla.com
push dateFri, 18 May 2018 22:04:52 +0000
treeherdermozilla-central@b54f574a1dd2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjryans
bugs1461970
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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: {