Skip to content

Commit 156c528

Browse files
authored
fix(typescript-eslint): apply ignores to all extended configs passed to config helper function (typescript-eslint#8567)
1 parent 4bc6944 commit 156c528

File tree

2 files changed

+69
-8
lines changed

2 files changed

+69
-8
lines changed

packages/typescript-eslint/src/config-helper.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,17 @@ export function config(
9191
return config;
9292
}
9393

94-
if (config.files) {
95-
const files = config.files;
96-
return [
97-
...extendsArr.map(conf => ({ ...conf, files: [...files] })),
98-
config,
99-
];
100-
}
94+
const extension = {
95+
...(config.files && { files: config.files }),
96+
...(config.ignores && { ignores: config.ignores }),
97+
};
10198

102-
return [...extendsArr, config];
99+
return [
100+
...extendsArr.map(conf => ({
101+
...conf,
102+
...extension,
103+
})),
104+
config,
105+
];
103106
});
104107
}

packages/typescript-eslint/tests/configs.test.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,61 @@ describe('stylistic-type-checked.ts', () => {
211211

212212
itHasBaseRulesOverriden(unfilteredConfigRules);
213213
});
214+
215+
describe('config helper', () => {
216+
it('works without extends', () => {
217+
expect(
218+
plugin.config({
219+
files: ['file'],
220+
rules: { rule: 'error' },
221+
ignores: ['ignored'],
222+
}),
223+
).toEqual([
224+
{
225+
files: ['file'],
226+
rules: { rule: 'error' },
227+
ignores: ['ignored'],
228+
},
229+
]);
230+
});
231+
232+
it('flattens extended configs', () => {
233+
expect(
234+
plugin.config({
235+
rules: { rule: 'error' },
236+
extends: [{ rules: { rule1: 'error' } }, { rules: { rule2: 'error' } }],
237+
}),
238+
).toEqual([
239+
{ rules: { rule1: 'error' } },
240+
{ rules: { rule2: 'error' } },
241+
{ rules: { rule: 'error' } },
242+
]);
243+
});
244+
245+
it('flattens extended configs with files and ignores', () => {
246+
expect(
247+
plugin.config({
248+
files: ['common-file'],
249+
ignores: ['common-ignored'],
250+
rules: { rule: 'error' },
251+
extends: [{ rules: { rule1: 'error' } }, { rules: { rule2: 'error' } }],
252+
}),
253+
).toEqual([
254+
{
255+
files: ['common-file'],
256+
ignores: ['common-ignored'],
257+
rules: { rule1: 'error' },
258+
},
259+
{
260+
files: ['common-file'],
261+
ignores: ['common-ignored'],
262+
rules: { rule2: 'error' },
263+
},
264+
{
265+
files: ['common-file'],
266+
ignores: ['common-ignored'],
267+
rules: { rule: 'error' },
268+
},
269+
]);
270+
});
271+
});

0 commit comments

Comments
 (0)