Skip to content

Commit

Permalink
fix(typescript-eslint): apply ignores to all extended configs passe…
Browse files Browse the repository at this point in the history
…d to `config` helper function (#8567)
  • Loading branch information
auvred committed Feb 27, 2024
1 parent 4bc6944 commit 156c528
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 8 deletions.
19 changes: 11 additions & 8 deletions packages/typescript-eslint/src/config-helper.ts
Expand Up @@ -91,14 +91,17 @@ export function config(
return config;
}

if (config.files) {
const files = config.files;
return [
...extendsArr.map(conf => ({ ...conf, files: [...files] })),
config,
];
}
const extension = {
...(config.files && { files: config.files }),
...(config.ignores && { ignores: config.ignores }),
};

return [...extendsArr, config];
return [
...extendsArr.map(conf => ({
...conf,
...extension,
})),
config,
];
});
}
58 changes: 58 additions & 0 deletions packages/typescript-eslint/tests/configs.test.ts
Expand Up @@ -211,3 +211,61 @@ describe('stylistic-type-checked.ts', () => {

itHasBaseRulesOverriden(unfilteredConfigRules);
});

describe('config helper', () => {
it('works without extends', () => {
expect(
plugin.config({
files: ['file'],
rules: { rule: 'error' },
ignores: ['ignored'],
}),
).toEqual([
{
files: ['file'],
rules: { rule: 'error' },
ignores: ['ignored'],
},
]);
});

it('flattens extended configs', () => {
expect(
plugin.config({
rules: { rule: 'error' },
extends: [{ rules: { rule1: 'error' } }, { rules: { rule2: 'error' } }],
}),
).toEqual([
{ rules: { rule1: 'error' } },
{ rules: { rule2: 'error' } },
{ rules: { rule: 'error' } },
]);
});

it('flattens extended configs with files and ignores', () => {
expect(
plugin.config({
files: ['common-file'],
ignores: ['common-ignored'],
rules: { rule: 'error' },
extends: [{ rules: { rule1: 'error' } }, { rules: { rule2: 'error' } }],
}),
).toEqual([
{
files: ['common-file'],
ignores: ['common-ignored'],
rules: { rule1: 'error' },
},
{
files: ['common-file'],
ignores: ['common-ignored'],
rules: { rule2: 'error' },
},
{
files: ['common-file'],
ignores: ['common-ignored'],
rules: { rule: 'error' },
},
]);
});
});

0 comments on commit 156c528

Please sign in to comment.