diff options
Diffstat (limited to 'devtools/client/commandline/test/browser_gcli_js.js')
-rw-r--r-- | devtools/client/commandline/test/browser_gcli_js.js | 570 |
1 files changed, 570 insertions, 0 deletions
diff --git a/devtools/client/commandline/test/browser_gcli_js.js b/devtools/client/commandline/test/browser_gcli_js.js new file mode 100644 index 000000000..4d36cedd8 --- /dev/null +++ b/devtools/client/commandline/test/browser_gcli_js.js @@ -0,0 +1,570 @@ +/* + * 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 + } + } + ]); +}; |