Bug 1441460 - ESLint's no-define-cc-etc looks at the wrong property item when checking for Cc/Ci/Cu/Cr usage. r=florian

MozReview-Commit-ID: IkSkCWqBHOn

--HG--
extra : rebase_source : 6b3a2977d4b157aea54c6e3f6960d3673e751a34
This commit is contained in:
Mark Banner 2018-02-23 20:42:17 +00:00
Родитель bce1a3def1
Коммит 294979dc32
12 изменённых файлов: 32 добавлений и 57 удалений

Просмотреть файл

@ -6,7 +6,6 @@ const TEST_MSG = "ContentSearchTest";
const CONTENT_SEARCH_MSG = "ContentSearch";
const TEST_CONTENT_SCRIPT_BASENAME = "contentSearch.js";
const { utils: Cu } = Components;
Cu.importGlobalProperties(["XMLHttpRequest"]);
var gMsgMan;

Просмотреть файл

@ -4,13 +4,6 @@
"use strict";
const {
classes: Cc,
interfaces: Ci,
utils: Cu,
results: Cr
} = Components;
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");

Просмотреть файл

@ -24,12 +24,10 @@
"use strict";
var {classes: Cc, interfaces: Ci, utils: Cu} = Components; /* global Components */
ChromeUtils.import("resource://gre/modules/Accounts.jsm"); /* global Accounts */
ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm"); /* global PromiseUtils */
ChromeUtils.import("resource://gre/modules/Services.jsm"); /* global Services */
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); /* global XPCOMUtils */
ChromeUtils.import("resource://gre/modules/Accounts.jsm");
ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
const ACTION_URL_PARAM = "action";

Просмотреть файл

@ -13,14 +13,12 @@ Migrated from Robocop: https://bugzilla.mozilla.org/show_bug.cgi?id=1184186
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<script type="application/javascript">
const { classes: Cc, interfaces: Ci, utils: Cu } = Components; /* global Components */
ChromeUtils.import("resource://gre/modules/Promise.jsm"); /* global Promise */
ChromeUtils.import("resource://gre/modules/Services.jsm"); /* global Services */
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); /* global XPCOMUtils */
ChromeUtils.import("resource://gre/modules/Task.jsm"); /* global Task */
ChromeUtils.import("resource://gre/modules/Promise.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.import("resource://gre/modules/Task.jsm");
ChromeUtils.defineModuleGetter(this, "WebChannel",
"resource://gre/modules/WebChannel.jsm"); /* global WebChannel */
"resource://gre/modules/WebChannel.jsm");
const HTTP_PATH = "http://mochi.test:8888";
const HTTP_ENDPOINT = "/chrome/mobile/android/tests/browser/chrome/web_channel.html";

Просмотреть файл

@ -4,12 +4,7 @@
"use strict";
const {
Constructor: CC,
classes: Cc,
interfaces: Ci,
results: Cr,
} = Components;
const CC = Components.Constructor;
ChromeUtils.import("resource://gre/modules/EventEmitter.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");

Просмотреть файл

@ -7,8 +7,7 @@
"use strict";
const { classes: Cc, interfaces: Ci, manager: Cm, results: Cr,
utils: Cu } = Components;
const Cm = Components.manager;
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");

Просмотреть файл

@ -4,8 +4,6 @@
"use strict";
const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} =
Components;
// 1 day default
const DEFAULT_SECONDS_BETWEEN_CHECKS = 60 * 60 * 24;

Просмотреть файл

@ -4,9 +4,6 @@
"use strict";
const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} =
Components;
var EXPORTED_SYMBOLS = [ "GMP_PLUGIN_IDS",
"GMPPrefs",
"GMPUtils",

Просмотреть файл

@ -29,9 +29,9 @@ module.exports = function(context) {
if (node.id.type == "ObjectPattern") {
for (let property of node.id.properties) {
if (componentsBlacklist.includes(property.key.name)) {
if (componentsBlacklist.includes(property.value.name)) {
context.report(node,
`${property.key.name} is now defined in global scope, a separate definition is no longer necessary.`);
`${property.value.name} is now defined in global scope, a separate definition is no longer necessary.`);
}
}
}

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "eslint-plugin-mozilla",
"version": "0.9.1",
"version": "0.9.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "eslint-plugin-mozilla",
"version": "0.9.1",
"version": "0.9.2",
"description": "A collection of rules that help enforce JavaScript coding standard in the Mozilla project.",
"keywords": [
"eslint",

Просмотреть файл

@ -16,19 +16,24 @@ const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
// Tests
// ------------------------------------------------------------------------------
function invalidCode(code, varName) {
return {code, errors: [{
message: `${varName} is now defined in global scope, a separate definition is no longer necessary.`,
type: "VariableDeclarator"
}]};
function invalidCode(code, varNames) {
if (!Array.isArray(varNames)) {
varNames = [varNames];
}
return {
code, errors: varNames.map(name => [{
message: `${name} is now defined in global scope, a separate definition is no longer necessary.`,
type: "VariableDeclarator"
}])
};
}
ruleTester.run("no-define-cc-etc", rule, {
valid: [
"var Cm = Components.manager;",
"const CC = Components.Constructor;",
"var {CC: Constructor, Cm: manager} = Components;",
"const {CC: Constructor, Cm: manager} = Components;",
"var {Constructor: CC, manager: Cm} = Components;",
"const {Constructor: CC, manager: Cm} = Components;",
"foo.Cc.test();"
],
invalid: [
@ -38,17 +43,10 @@ ruleTester.run("no-define-cc-etc", rule, {
invalidCode("let Cr;", "Cr"),
invalidCode("let Cu;", "Cu"),
invalidCode("var Cc = Components.classes;", "Cc"),
invalidCode("const {Cc} = Components;", "Cc"),
invalidCode("let {Cc, Cm} = Components", "Cc"),
invalidCode("const Cu = Components.utils;", "Cu"), {
code: "var {Ci: interfaces, Cc: classes} = Components;",
errors: [{
message: `Ci is now defined in global scope, a separate definition is no longer necessary.`,
type: "VariableDeclarator"
}, {
message: `Cc is now defined in global scope, a separate definition is no longer necessary.`,
type: "VariableDeclarator"
}]
}
invalidCode("const {classes: Cc} = Components;", "Cc"),
invalidCode("let {classes: Cc, manager: Cm} = Components", "Cc"),
invalidCode("const Cu = Components.utils;", "Cu"),
invalidCode("var Ci = Components.interfaces, Cc = Components.classes;", ["Ci", "Cc"]),
invalidCode("var {'interfaces': Ci, 'classes': Cc} = Components;", ["Ci", "Cc"])
]
});