gecko-dev/devtools/client/commandline/test/browser_gcli_js.js

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
}
}
]);
};