Skip to content

Commit d1e03a1

Browse files
authored
fix: ensure rules bail out early when no rule present (#293)
1 parent d06d1f2 commit d1e03a1

37 files changed

+147
-45
lines changed

Diff for: lib/rules/meta-property-ordering.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ module.exports = {
3636
create(context) {
3737
const sourceCode = context.getSourceCode();
3838
const info = getRuleInfo(sourceCode);
39+
if (!info) {
40+
return {};
41+
}
3942

4043
const order = context.options[0] || [
4144
'type',
@@ -50,7 +53,7 @@ module.exports = {
5053

5154
return {
5255
Program() {
53-
if (!info || !info.meta || info.meta.properties.length < 2) {
56+
if (!info.meta || info.meta.properties.length < 2) {
5457
return;
5558
}
5659

Diff for: lib/rules/no-missing-message-ids.js

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ module.exports = {
2929
const sourceCode = context.getSourceCode();
3030
const { scopeManager } = sourceCode;
3131
const ruleInfo = utils.getRuleInfo(sourceCode);
32+
if (!ruleInfo) {
33+
return {};
34+
}
3235

3336
const messagesNode = utils.getMessagesNode(ruleInfo, scopeManager);
3437

Diff for: lib/rules/no-missing-placeholders.js

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ module.exports = {
3737
let contextIdentifiers;
3838

3939
const ruleInfo = utils.getRuleInfo(sourceCode);
40+
if (!ruleInfo) {
41+
return {};
42+
}
43+
4044
const messagesNode = utils.getMessagesNode(ruleInfo, scopeManager);
4145

4246
return {

Diff for: lib/rules/no-unused-message-ids.js

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ module.exports = {
2727
const sourceCode = context.getSourceCode();
2828
const { scopeManager } = sourceCode;
2929
const info = utils.getRuleInfo(sourceCode);
30+
if (!info) {
31+
return {};
32+
}
3033

3134
const messageIdsUsed = new Set();
3235
let contextIdentifiers;

Diff for: lib/rules/no-unused-placeholders.js

+3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ module.exports = {
3737
let contextIdentifiers;
3838

3939
const ruleInfo = utils.getRuleInfo(sourceCode);
40+
if (!ruleInfo) {
41+
return {};
42+
}
4043
const messagesNode = utils.getMessagesNode(ruleInfo, scopeManager);
4144

4245
return {

Diff for: lib/rules/prefer-message-ids.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ module.exports = {
3030
create(context) {
3131
const sourceCode = context.getSourceCode();
3232
const info = utils.getRuleInfo(sourceCode);
33+
if (!info) {
34+
return {};
35+
}
3336

3437
let contextIdentifiers;
3538

@@ -44,10 +47,6 @@ module.exports = {
4447
ast
4548
);
4649

47-
if (info === null) {
48-
return;
49-
}
50-
5150
const metaNode = info.meta;
5251
const messagesNode =
5352
metaNode &&

Diff for: lib/rules/prefer-object-rule.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@ module.exports = {
3434

3535
const sourceCode = context.getSourceCode();
3636
const ruleInfo = utils.getRuleInfo(sourceCode);
37+
if (!ruleInfo) {
38+
return {};
39+
}
3740

3841
return {
3942
Program() {
40-
if (!ruleInfo || ruleInfo.isNewStyle) {
43+
if (ruleInfo.isNewStyle) {
4144
return;
4245
}
4346

Diff for: lib/rules/report-message-format.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,23 @@ module.exports = {
5757
}
5858
}
5959

60+
const sourceCode = context.getSourceCode();
61+
const ruleInfo = utils.getRuleInfo(sourceCode);
62+
if (!ruleInfo) {
63+
return {};
64+
}
65+
6066
// ----------------------------------------------------------------------
6167
// Public
6268
// ----------------------------------------------------------------------
6369

6470
return {
6571
Program(ast) {
66-
const sourceCode = context.getSourceCode();
6772
contextIdentifiers = utils.getContextIdentifiers(
6873
sourceCode.scopeManager,
6974
ast
7075
);
71-
const ruleInfo = utils.getRuleInfo(sourceCode);
76+
7277
const messagesObject =
7378
ruleInfo &&
7479
ruleInfo.meta &&

Diff for: lib/rules/require-meta-docs-description.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ module.exports = {
4242
},
4343

4444
create(context) {
45+
const sourceCode = context.getSourceCode();
46+
const info = utils.getRuleInfo(sourceCode);
47+
if (!info) {
48+
return {};
49+
}
50+
4551
return {
4652
Program() {
47-
const sourceCode = context.getSourceCode();
4853
const { scopeManager } = sourceCode;
49-
const info = utils.getRuleInfo(sourceCode);
50-
51-
if (info === null) {
52-
return;
53-
}
5454

5555
const pattern =
5656
context.options[0] && context.options[0].pattern

Diff for: lib/rules/require-meta-docs-url.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,16 @@ module.exports = {
7272
);
7373
}
7474

75+
const sourceCode = context.getSourceCode();
76+
const info = util.getRuleInfo(sourceCode);
77+
if (!info) {
78+
return {};
79+
}
80+
7581
return {
7682
Program() {
77-
const sourceCode = context.getSourceCode();
7883
const { scopeManager } = sourceCode;
7984

80-
const info = util.getRuleInfo(sourceCode);
81-
if (info === null) {
82-
return;
83-
}
84-
8585
const metaNode = info.meta;
8686
const docsPropNode = util
8787
.evaluateObjectProperties(metaNode, scopeManager)

Diff for: lib/rules/require-meta-has-suggestions.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ module.exports = {
3232
const sourceCode = context.getSourceCode();
3333
const { scopeManager } = sourceCode;
3434
const ruleInfo = utils.getRuleInfo(sourceCode);
35+
if (!ruleInfo) {
36+
return {};
37+
}
3538
let contextIdentifiers;
3639
let ruleReportsSuggestions;
3740

@@ -58,10 +61,6 @@ module.exports = {
5861
return false;
5962
}
6063

61-
if (!ruleInfo) {
62-
return {};
63-
}
64-
6564
return {
6665
Program(ast) {
6766
contextIdentifiers = utils.getContextIdentifiers(scopeManager, ast);

Diff for: lib/rules/require-meta-schema.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ module.exports = {
4444
const sourceCode = context.getSourceCode();
4545
const { scopeManager } = sourceCode;
4646
const info = utils.getRuleInfo(sourceCode);
47-
if (info === null) {
47+
if (!info) {
4848
return {};
4949
}
5050

Diff for: lib/rules/require-meta-type.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ module.exports = {
3838
// Public
3939
// ----------------------------------------------------------------------
4040

41+
const sourceCode = context.getSourceCode();
42+
const info = utils.getRuleInfo(sourceCode);
43+
if (!info) {
44+
return {};
45+
}
46+
4147
return {
4248
Program() {
43-
const sourceCode = context.getSourceCode();
4449
const { scopeManager } = sourceCode;
45-
const info = utils.getRuleInfo(sourceCode);
46-
47-
if (info === null) {
48-
return;
49-
}
5050

5151
const metaNode = info.meta;
5252
const typeNode = utils

Diff for: tests/lib/rules/consistent-output.js

+10
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ ruleTester.run('consistent-output', rule, {
6868
`,
6969
options: ['always'],
7070
},
71+
`
72+
new NotRuleTester().run('foo', bar, {
73+
valid: [],
74+
invalid: [{code: 'foo', output: 'baz', errors: ['bar']},{code: 'foo', errors: ['bar']}]
75+
});`, // Not RuleTester.
76+
`
77+
new RuleTester().notRun('foo', bar, {
78+
valid: [],
79+
invalid: [{code: 'foo', output: 'baz', errors: ['bar']},{code: 'foo', errors: ['bar']}]
80+
});`, // Not run() from RuleTester.
7181
],
7282

7383
invalid: [

Diff for: tests/lib/rules/fixer-return.js

+1
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ ruleTester.run('fixer-return', rule, {
270270
}
271271
};
272272
`,
273+
`module.exports = {};`, // Not a rule.
273274
],
274275

275276
invalid: [

Diff for: tests/lib/rules/meta-property-ordering.js

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ ruleTester.run('test-case-property-ordering', rule, {
7272
create() {},
7373
};`,
7474
'module.exports = { create() {} };', // No `meta`.
75+
'module.exports = {};', // No rule;
7576
],
7677

7778
invalid: [

Diff for: tests/lib/rules/no-deprecated-context-methods.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ ruleTester.run('no-deprecated-context-methods', rule, {
3232
sourceCode.getFirstToken();
3333
return {};
3434
}
35-
`,
35+
`,
36+
`module.exports = {};`, // Not a rule.
3637
],
3738

3839
invalid: [

Diff for: tests/lib/rules/no-deprecated-report-api.js

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ ruleTester.run('no-deprecated-report-api', rule, {
7878
}
7979
};
8080
`,
81+
`module.exports = {};`, // Not a rule.
8182
],
8283

8384
invalid: [

Diff for: tests/lib/rules/no-identical-tests.js

+10
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ ruleTester.run('no-identical-tests', rule, {
6767
invalid: []
6868
});
6969
`,
70+
`
71+
new NotRuleTester().run('foo', bar, {
72+
valid: [],
73+
invalid: [{code: 'foo', output: 'baz', errors: ['bar']},{code: 'foo', output: 'baz', errors: ['bar']}]
74+
});`, // Not RuleTester.
75+
`
76+
new RuleTester().notRun('foo', bar, {
77+
valid: [],
78+
invalid: [{code: 'foo', output: 'baz', errors: ['bar']},{code: 'foo', output: 'baz', errors: ['bar']}]
79+
});`, // Not run() from RuleTester.
7080
],
7181

7282
invalid: [

Diff for: tests/lib/rules/no-missing-message-ids.js

+1
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ ruleTester.run('no-missing-message-ids', rule, {
238238
}
239239
};
240240
`,
241+
'module.exports = {};', // No rule.
241242
],
242243

243244
invalid: [

Diff for: tests/lib/rules/no-missing-placeholders.js

+1
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ ruleTester.run('no-missing-placeholders', rule, {
222222
}
223223
};
224224
`,
225+
`module.exports = {};`, // No rule.
225226
],
226227

227228
invalid: [

Diff for: tests/lib/rules/no-only-tests.js

+10
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ ruleTester.run('no-only-tests', rule, {
4343
]
4444
});
4545
`,
46+
`
47+
new NotRuleTester().run('foo', bar, {
48+
valid: [{ code: 'foo', only: true },],
49+
invalid: []
50+
});`, // Not RuleTester.
51+
`
52+
new RuleTester().notRun('foo', bar, {
53+
valid: [{ code: 'foo', only: true },],
54+
invalid: []
55+
});`, // Not run() from RuleTester.
4656
],
4757

4858
invalid: [

Diff for: tests/lib/rules/no-unused-message-ids.js

+1
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ ruleTester.run('no-unused-message-ids', rule, {
271271
}
272272
};
273273
`,
274+
'module.exports = {};', // No rule.
274275
],
275276

276277
invalid: [

Diff for: tests/lib/rules/no-unused-placeholders.js

+1
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ ruleTester.run('no-unused-placeholders', rule, {
197197
}
198198
};
199199
`,
200+
'module.exports = {};', // No rule.
200201
],
201202

202203
invalid: [

Diff for: tests/lib/rules/no-useless-token-range.js

+14-11
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,20 @@ const INVALID_CASES = [
8181
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
8282
ruleTester.run('no-useless-token-range', rule, {
8383
valid: [
84-
'sourceCode.getLastToken(foo).range[0]',
85-
'sourceCode.getFirstToken(foo).range[1]',
86-
'sourceCode.getLastToken(foo).start',
87-
'sourceCode.getFirstToken(foo).end',
88-
'sourceCode.getSomethingElse(foo).range[0]',
89-
'notSourceCode.getFirstToken(foo).range[0]',
90-
'sourceCode.getFirstToken(foo, bar).range[0]',
91-
'sourceCode.getFirstToken(foo, { skip: 1 }).start',
92-
'sourceCode.getLastToken(foo, bar).range[1]',
93-
'sourceCode.getLastToken(foo, { skip: 1 }).end',
94-
].map(wrapRule),
84+
...[
85+
'sourceCode.getLastToken(foo).range[0]',
86+
'sourceCode.getFirstToken(foo).range[1]',
87+
'sourceCode.getLastToken(foo).start',
88+
'sourceCode.getFirstToken(foo).end',
89+
'sourceCode.getSomethingElse(foo).range[0]',
90+
'notSourceCode.getFirstToken(foo).range[0]',
91+
'sourceCode.getFirstToken(foo, bar).range[0]',
92+
'sourceCode.getFirstToken(foo, { skip: 1 }).start',
93+
'sourceCode.getLastToken(foo, bar).range[1]',
94+
'sourceCode.getLastToken(foo, { skip: 1 }).end',
95+
].map(wrapRule),
96+
'module.exports = {};', // Not a rule.
97+
],
9598

9699
invalid: [
97100
...INVALID_CASES,

Diff for: tests/lib/rules/prefer-message-ids.js

+1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ ruleTester.run('prefer-message-ids', rule, {
122122
}
123123
};
124124
`,
125+
'module.exports = {};', // No rule.
125126
],
126127

127128
invalid: [

Diff for: tests/lib/rules/prefer-object-rule.js

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ ruleTester.run('prefer-object-rule', rule, {
7979
`,
8080
parserOptions: { sourceType: 'module' },
8181
},
82+
'module.exports = {};', // No rule.
8283
],
8384

8485
invalid: [

0 commit comments

Comments
 (0)