Skip to content

Commit 99a1349

Browse files
authored
fix(#18): update filename-blocklist to check filename path
* fix: update filename-blocklist to check filename path * fix: update blocklist to keep legacy match based on filename
1 parent 8369b6f commit 99a1349

File tree

3 files changed

+146
-10
lines changed

3 files changed

+146
-10
lines changed

lib/rules/filename-blocklist.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,17 @@ module.exports = {
6161
for (const [blockListPattern, useInsteadPattern] of Object.entries(
6262
rules
6363
)) {
64-
const matchResult = matchRule(filename, blockListPattern);
64+
const matchResult =
65+
matchRule(filenameWithPath, blockListPattern) ||
66+
matchRule(filename, blockListPattern);
6567

6668
if (matchResult) {
67-
const { path } = matchResult;
68-
6969
context.report({
7070
node,
7171
message:
72-
'The filename "{{ path }}" matches the blocklisted "{{ blockListPattern }}" pattern. Use a pattern like "{{ useInsteadPattern }}" instead.',
72+
'The filename "{{ filename }}" matches the blocklisted "{{ blockListPattern }}" pattern. Use a pattern like "{{ useInsteadPattern }}" instead.',
7373
data: {
74-
path,
74+
filename,
7575
blockListPattern,
7676
useInsteadPattern,
7777
},

tests/lib/rules/filename-blocklist.posix.js

Lines changed: 107 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,44 @@ ruleTester.run(
2121
{
2222
code: "var foo = 'bar';",
2323
filename: 'src/foo.model.ts',
24-
options: [{ '*.models.ts': '*.model.ts', '*.utils.ts': '*.util.ts' }],
24+
options: [
25+
{
26+
'*.models.ts': '*.model.ts',
27+
'*.utils.ts': '*.util.ts',
28+
},
29+
],
2530
},
2631
{
2732
code: "var foo = 'bar';",
2833
filename: 'src/foo.util.ts',
29-
options: [{ '*.models.ts': '*.model.ts', '*.utils.ts': '*.util.ts' }],
34+
options: [
35+
{
36+
'*.models.ts': '*.model.ts',
37+
'*.utils.ts': '*.util.ts',
38+
},
39+
],
3040
},
3141
{
3242
code: "var foo = 'bar';",
3343
filename: 'src/foo.apis.ts',
34-
options: [{ '*.models.ts': '*.model.ts', '*.utils.ts': '*.util.ts' }],
44+
options: [
45+
{
46+
'*.models.ts': '*.model.ts',
47+
'*.utils.ts': '*.util.ts',
48+
},
49+
],
3550
},
3651
],
3752
invalid: [
3853
{
3954
code: "var foo = 'bar';",
4055
filename: 'src/foo.models.ts',
41-
options: [{ '*.models.ts': '*.model.ts', '*.utils.ts': '*.util.ts' }],
56+
options: [
57+
{
58+
'*.models.ts': '*.model.ts',
59+
'*.utils.ts': '*.util.ts',
60+
},
61+
],
4262
errors: [
4363
{
4464
message:
@@ -51,7 +71,12 @@ ruleTester.run(
5171
{
5272
code: "var foo = 'bar';",
5373
filename: 'src/foo.utils.ts',
54-
options: [{ '*.models.ts': '*.model.ts', '*.utils.ts': '*.util.ts' }],
74+
options: [
75+
{
76+
'*.models.ts': '*.model.ts',
77+
'*.utils.ts': '*.util.ts',
78+
},
79+
],
5580
errors: [
5681
{
5782
message:
@@ -65,6 +90,83 @@ ruleTester.run(
6590
}
6691
);
6792

93+
ruleTester.run(
94+
"filename-blocklist with option: [{ 'src/*.models.ts': '*.model.ts', 'src/*.utils.ts': '*.util.ts' }]",
95+
rule,
96+
{
97+
valid: [
98+
{
99+
code: "var foo = 'bar';",
100+
filename: 'not-src/foo.model.ts',
101+
options: [
102+
{
103+
'src/*.models.ts': '*.model.ts',
104+
'src/*.utils.ts': '*.util.ts',
105+
},
106+
],
107+
},
108+
{
109+
code: "var foo = 'bar';",
110+
filename: 'not-src/foo.util.ts',
111+
options: [
112+
{
113+
'src/*.models.ts': '*.model.ts',
114+
'src/*.utils.ts': '*.util.ts',
115+
},
116+
],
117+
},
118+
{
119+
code: "var foo = 'bar';",
120+
filename: 'not-src/foo.apis.ts',
121+
options: [
122+
{
123+
'src/*.models.ts': '*.model.ts',
124+
'src/*.utils.ts': '*.util.ts',
125+
},
126+
],
127+
},
128+
],
129+
invalid: [
130+
{
131+
code: "var foo = 'bar';",
132+
filename: 'src/foo.models.ts',
133+
options: [
134+
{
135+
'src/*.models.ts': '*.model.ts',
136+
'src/*.utils.ts': '*.util.ts',
137+
},
138+
],
139+
errors: [
140+
{
141+
message:
142+
'The filename "foo.models.ts" matches the blocklisted "src/*.models.ts" pattern. Use a pattern like "*.model.ts" instead.',
143+
column: 1,
144+
line: 1,
145+
},
146+
],
147+
},
148+
{
149+
code: "var foo = 'bar';",
150+
filename: 'src/foo.utils.ts',
151+
options: [
152+
{
153+
'src/*.models.ts': '*.model.ts',
154+
'src/*.utils.ts': '*.util.ts',
155+
},
156+
],
157+
errors: [
158+
{
159+
message:
160+
'The filename "foo.utils.ts" matches the blocklisted "src/*.utils.ts" pattern. Use a pattern like "*.util.ts" instead.',
161+
column: 1,
162+
line: 1,
163+
},
164+
],
165+
},
166+
],
167+
}
168+
);
169+
68170
ruleTester.run(
69171
"filename-blocklist with option: [{ '*.models.ts': 'FOO' }]",
70172
rule,

tests/lib/rules/filename-blocklist.windows.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,40 @@ ruleTester.run(
6161
}
6262
);
6363

64+
ruleTester.run(
65+
"filename-blocklist with option on Windows: [{ 'src/*.models.ts': '*.model.ts' }]",
66+
rule,
67+
{
68+
valid: [
69+
{
70+
code: "var foo = 'bar';",
71+
filename: 'C:\\Users\\Administrator\\Downloads\\wai\\src\\foo.model.ts',
72+
options: [{ 'src/*.models.ts': '*.model.ts' }],
73+
},
74+
{
75+
code: "var foo = 'bar';",
76+
filename: 'src\\foo.model.ts',
77+
options: [{ 'src/*.models.ts': '*.model.ts' }],
78+
},
79+
],
80+
invalid: [
81+
{
82+
code: "var foo = 'bar';",
83+
filename: 'src\\foo.models.ts',
84+
options: [{ 'src/*.models.ts': '*.model.ts' }],
85+
errors: [
86+
{
87+
message:
88+
'The filename "foo.models.ts" matches the blocklisted "src/*.models.ts" pattern. Use a pattern like "*.model.ts" instead.',
89+
column: 1,
90+
line: 1,
91+
},
92+
],
93+
},
94+
],
95+
}
96+
);
97+
6498
ruleTester.run(
6599
"filename-blocklist with option on Windows: [{ '*.models.ts': 'FOO' }]",
66100
rule,

0 commit comments

Comments
 (0)