/* * 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", 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", 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 } } ]); };