Skip to content

Commit c375101

Browse files
authored
fix: prevent modifying test.exclude when same object passed in coverage.exclude (#7774)
1 parent d929792 commit c375101

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

packages/vitest/src/node/config/resolveConfig.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -349,16 +349,23 @@ export function resolveConfig(
349349
resolved.globalSetup = toArray(resolved.globalSetup || []).map(file =>
350350
resolvePath(file, resolved.root),
351351
)
352-
resolved.coverage.exclude.push(
352+
353+
// override original exclude array for cases where user re-uses same object in test.exclude
354+
resolved.coverage.exclude = [
355+
...resolved.coverage.exclude,
356+
357+
// Exclude setup files
353358
...resolved.setupFiles.map(
354359
file =>
355360
`${resolved.coverage.allowExternal ? '**/' : ''}${relative(
356361
resolved.root,
357362
file,
358363
)}`,
359364
),
360-
)
361-
resolved.coverage.exclude.push(...resolved.include)
365+
366+
// Exclude test files
367+
...resolved.include,
368+
]
362369

363370
resolved.forceRerunTriggers = [
364371
...resolved.forceRerunTriggers,

test/config/test/public.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,21 @@ test('respects custom config', async () => {
4242
expect(vitestConfig.name).toBe('custom config')
4343
expect(vitestConfig.reporters).toEqual([['default', {}]])
4444
})
45+
46+
test('default value changes of coverage.exclude do not reflect to test.exclude', async () => {
47+
const exclude = ['**/custom-exclude/**']
48+
49+
const { vitestConfig } = await resolveConfig({
50+
include: ['**/example.test.ts'],
51+
exclude,
52+
coverage: {
53+
exclude,
54+
},
55+
})
56+
57+
expect(exclude).toStrictEqual(['**/custom-exclude/**'])
58+
59+
expect(vitestConfig.include).toStrictEqual(['**/example.test.ts'])
60+
expect(vitestConfig.exclude).toStrictEqual(['**/custom-exclude/**'])
61+
expect(vitestConfig.coverage.exclude).toStrictEqual(['**/custom-exclude/**', '**/example.test.ts'])
62+
})

0 commit comments

Comments
 (0)