Skip to content

Commit 65628e8

Browse files
committed
fix(@angular/build): provide default excludes for vitest coverage
Ensures vitest coverage uses default exclude patterns in addition to user defined ones. This provides a behavior similar to 3478aa3 but for vitest, as the default exclusions contain directories starting with a dot.
1 parent f263306 commit 65628e8

File tree

1 file changed

+30
-1
lines changed
  • packages/angular/build/src/builders/unit-test/runners/vitest

1 file changed

+30
-1
lines changed

packages/angular/build/src/builders/unit-test/runners/vitest/executor.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,11 @@ export class VitestExecutor implements TestExecutor {
189189
reporters: reporters ?? ['default'],
190190
outputFile,
191191
watch,
192+
<<<<<<< HEAD
192193
coverage: generateCoverageOption(coverage, this.projectName),
194+
=======
195+
coverage: await generateCoverageOption(codeCoverage, this.projectName),
196+
>>>>>>> 6f9c53ac5 (fix(@angular/build): provide default excludes for vitest coverage)
193197
...debugOptions,
194198
},
195199
{
@@ -204,16 +208,32 @@ export class VitestExecutor implements TestExecutor {
204208
}
205209
}
206210

211+
<<<<<<< HEAD
207212
function generateCoverageOption(
208213
coverage: NormalizedUnitTestBuilderOptions['coverage'],
209214
projectName: string,
210215
): VitestCoverageOption {
211216
if (!coverage) {
217+
=======
218+
async function generateCoverageOption(
219+
codeCoverage: NormalizedUnitTestBuilderOptions['codeCoverage'],
220+
projectName: string,
221+
): Promise<VitestCoverageOption> {
222+
if (!codeCoverage) {
223+
>>>>>>> 6f9c53ac5 (fix(@angular/build): provide default excludes for vitest coverage)
212224
return {
213225
enabled: false,
214226
};
215227
}
216228

229+
let defaultExcludes: string[] = [];
230+
if (codeCoverage.exclude) {
231+
try {
232+
const vitestConfig = await loadEsmModule<typeof import('vitest/config')>('vitest/config');
233+
defaultExcludes = vitestConfig.coverageConfigDefaults.exclude;
234+
} catch {}
235+
}
236+
217237
return {
218238
enabled: true,
219239
all: coverage.all,
@@ -223,7 +243,16 @@ function generateCoverageOption(
223243
thresholds: coverage.thresholds,
224244
watermarks: coverage.watermarks,
225245
// Special handling for `exclude`/`reporters` due to an undefined value causing upstream failures
226-
...(coverage.exclude ? { exclude: coverage.exclude } : {}),
246+
...(coverage.exclude
247+
? {
248+
exclude: [
249+
// Augment the default exclude https://vitest.dev/config/#coverage-exclude
250+
// with the user defined exclusions
251+
...coverage.exclude,
252+
...defaultExcludes,
253+
],
254+
}
255+
: {}),
227256
...(coverage.reporters
228257
? ({ reporter: coverage.reporters } satisfies VitestCoverageOption)
229258
: {}),

0 commit comments

Comments
 (0)