Bug 1358947 - Make eslint "max-nested-callbacks" rule an error. r?standard8 draft
authorChris Peterson <cpeterson@mozilla.com>
Fri, 21 Apr 2017 23:00:26 -0700
changeset 566844 6f5e75502be394038543029e3cfd474c5b1c2e98
parent 566789 8e969cc9aff49f845678cba5b35d9dd8aa340f16
child 625451 e82fd0cc7e47d531fa5f50101733b844d8668aff
push id55364
push usercpeterson@mozilla.com
push dateMon, 24 Apr 2017 03:26:48 +0000
reviewersstandard8
bugs1358947
milestone55.0a1
Bug 1358947 - Make eslint "max-nested-callbacks" rule an error. r?standard8 eslint's default max-nested-callbacks threshold is 10, but now we make it an error. We could further lower the max-nested-callbacks threshold globally to 8, like browser/.eslintrc.js, but that would require adding suppression comments in (two) more .js test files. 10 seems good enough for now since it's the eslint default. We need to specify max-nested-callbacks in accessible/.eslintrc because it doesn't inherit the mozilla/recommended rules. Also bump the eslint-plugin-mozilla version because we modified the mozilla/recommended rules. MozReview-Commit-ID: JA41vsi4U7j
accessible/.eslintrc.js
toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js
toolkit/mozapps/extensions/test/browser/browser_bug562797.js
tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
tools/lint/eslint/eslint-plugin-mozilla/package.json
--- a/accessible/.eslintrc.js
+++ b/accessible/.eslintrc.js
@@ -8,10 +8,14 @@ module.exports = {
     "Cc": true,
     "Ci": true,
     "Components": true,
     "console": true,
     "Cu": true,
     "dump": true,
     "Services": true,
     "XPCOMUtils": true
+  },
+  "rules": {
+    // Maximum depth callbacks can be nested.
+    "max-nested-callbacks": ["error", 10],
   }
 };
--- a/toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js
+++ b/toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js
@@ -1,12 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+/* eslint max-nested-callbacks: ["warn", 17] */
+
 /**
  * This file tests setAndFetchFaviconForPage when it is called with invalid
  * arguments, and when no favicon is stored for the given arguments.
  */
 function test() {
   // Initialization
   waitForExplicitFinish();
   let windowsToClose = [];
--- a/toolkit/mozapps/extensions/test/browser/browser_bug562797.js
+++ b/toolkit/mozapps/extensions/test/browser/browser_bug562797.js
@@ -1,12 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
 
+/* eslint max-nested-callbacks: ["warn", 12] */
+
 /**
  * Tests that history navigation works for the add-ons manager.
  */
 
 const MAIN_URL = "https://example.com/" + RELATIVE_DIR + "discovery.html";
 const SECOND_URL = "https://example.com/" + RELATIVE_DIR + "releaseNotes.xhtml";
 
 var gLoadCompleteCallback = null;
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
@@ -130,17 +130,17 @@ module.exports = {
     "no-empty": ["error", {"allowEmptyCatch": true}],
 
     // No empty character classes in regex
     "no-empty-character-class": "error",
 
     // Disallow empty destructuring
     "no-empty-pattern": "error",
 
-    // No assiging to exception variable
+    // No assigning to exception variable
     "no-ex-assign": "error",
 
     // No using !! where casting to boolean is already happening
     "no-extra-boolean-cast": "error",
 
     // No double semicolon
     "no-extra-semi": "error",
 
@@ -154,16 +154,19 @@ module.exports = {
     "no-irregular-whitespace": "error",
 
     // Disallow the use of the __iterator__ property
     "no-iterator": "error",
 
     // No single if block inside an else block
     "no-lonely-if": "error",
 
+    // Maximum depth callbacks can be nested.
+    "max-nested-callbacks": ["error", 10],
+
     // No mixing spaces and tabs in indent
     "no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
 
     // No unnecessary spacing
     "no-multi-spaces": ["error", { exceptions: {
       "AssignmentExpression": true,
       "VariableDeclarator": true,
       "ArrayExpression": true,
--- a/tools/lint/eslint/eslint-plugin-mozilla/package.json
+++ b/tools/lint/eslint/eslint-plugin-mozilla/package.json
@@ -1,11 +1,11 @@
 {
   "name": "eslint-plugin-mozilla",
-  "version": "0.2.42",
+  "version": "0.2.43",
   "description": "A collection of rules that help enforce JavaScript coding standard in the Mozilla project.",
   "keywords": [
     "eslint",
     "eslintplugin",
     "eslint-plugin",
     "mozilla",
     "firefox"
   ],