forked from revolter-firefox/revolter-firefox
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintrc.js
134 lines (125 loc) · 4.23 KB
/
.eslintrc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
"use strict";
const xpcshellTestConfig = require("eslint-plugin-mozilla/lib/configs/xpcshell-test.js");
const browserTestConfig = require("eslint-plugin-mozilla/lib/configs/browser-test.js");
const mochitestTestConfig = require("eslint-plugin-mozilla/lib/configs/mochitest-test.js");
const chromeTestConfig = require("eslint-plugin-mozilla/lib/configs/chrome-test.js");
/**
* Some configurations have overrides, which can't be specified within overrides,
* so we need to remove them.
*/
function removeOverrides(config) {
config = {...config};
delete config.overrides;
return config;
}
const xpcshellTestPaths = [
"**/test*/unit*/",
"**/test*/xpcshell/",
];
const browserTestPaths = [
"**/test*/**/browser/",
];
const mochitestTestPaths = [
"**/test*/mochitest/",
];
const chromeTestPaths = [
"**/test*/chrome/",
];
module.exports = {
// New rules and configurations should generally be added in
// tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js to
// allow external repositories that use the plugin to pick them up as well.
"extends": [
"plugin:mozilla/recommended"
],
"plugins": [
"mozilla"
],
// The html plugin is enabled via a command line option on eslint. To avoid
// bad interactions with the xml preprocessor in eslint-plugin-mozilla, we
// turn off processing of the html plugin for .xml files.
"settings": {
"html/xml-extensions": [ ".xhtml" ]
},
"overrides": [{
// eslint-plugin-html handles eol-last slightly different - it applies to
// each set of script tags, so we turn it off here.
"files": "**/*.*html",
"rules": {
"eol-last": "off",
}
}, {
// These xbl bindings are assumed to be in the browser-window environment,
// we would mark it in the files, but ESLint made this more difficult with
// our xml processor, so we list them here. Bug 1397874 & co are working
// towards removing these files completely.
"files": [
"browser/base/content/tabbrowser.xml",
"browser/base/content/urlbarBindings.xml",
"browser/components/search/content/search.xml",
"browser/components/translation/translation-infobar.xml",
"toolkit/components/prompts/content/tabprompts.xml"
],
"env": {
"mozilla/browser-window": true
}
}, {
// TODO: Bug 1513639. Temporarily turn off reject-importGlobalProperties
// due to other ESLint enabling happening in DOM.
"files": "dom/**",
"rules": {
"mozilla/reject-importGlobalProperties": "off",
}
}, {
// TODO: Bug 1515949. Enable no-undef for gfx/
"files": "gfx/layers/apz/test/mochitest/**",
"rules": {
"no-undef": "off",
}
}, {
...removeOverrides(xpcshellTestConfig),
"files": xpcshellTestPaths.map(path => `${path}**`),
"excludedFiles": "devtools/**"
}, {
// If it is an xpcshell head file, we turn off global unused variable checks, as it
// would require searching the other test files to know if they are used or not.
// This would be expensive and slow, and it isn't worth it for head files.
// We could get developers to declare as exported, but that doesn't seem worth it.
"files": xpcshellTestPaths.map(path => `${path}head*.js`),
"rules": {
"no-unused-vars": ["error", {
"args": "none",
"vars": "local",
}],
},
}, {
...browserTestConfig,
"files": browserTestPaths.map(path => `${path}**`),
"excludedFiles": "devtools/**"
}, {
...removeOverrides(mochitestTestConfig),
"files": mochitestTestPaths.map(path => `${path}**`),
"excludedFiles": [
"devtools/**",
"security/manager/ssl/tests/mochitest/browser/**",
"testing/mochitest/**",
],
}, {
...removeOverrides(chromeTestConfig),
"files": chromeTestPaths.map(path => `${path}**`),
"excludedFiles": [
"devtools/**",
],
}, {
"env": {
// Ideally we wouldn't be using the simpletest env here, but our uses of
// js files mean we pick up everything from the global scope, which could
// be any one of a number of html files. So we just allow the basics...
"mozilla/simpletest": true,
},
"files": [
...mochitestTestPaths.map(path => `${path}/**/*.js`),
...chromeTestPaths.map(path => `${path}/**/*.js`),
],
}]
};