зеркало из https://github.com/mozilla/gecko-dev.git
571 строка
13 KiB
JavaScript
571 строка
13 KiB
JavaScript
/*
|
|
* 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
|
|
}
|
|
}
|
|
]);
|
|
};
|