Skip to content

Commit b420512

Browse files
committed
chore: resolve coverage reporter using coverage resolver
1 parent 137c5d8 commit b420512

File tree

3 files changed

+27
-21
lines changed

3 files changed

+27
-21
lines changed

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { RandomSequencer } from '../sequencers/RandomSequencer'
2424
import type { BenchmarkBuiltinReporters } from '../reporters'
2525
import { builtinPools } from '../pool'
2626
import type { Logger } from '../logger'
27+
import type { BaseCoverageOptions, CoverageReporterWithOptions } from '../types/coverage'
2728

2829
function resolvePath(path: string, root: string) {
2930
return normalize(
@@ -229,7 +230,7 @@ export function resolveConfig(
229230
)
230231
}
231232

232-
resolved.coverage.reporter = toArray(resolved.coverage.reporter)
233+
resolved.coverage.reporter = resolveCoverageReporters(resolved.coverage.reporter)
233234

234235
if (resolved.coverage.enabled && resolved.coverage.reportsDirectory) {
235236
const reportsDirectory = resolve(
@@ -791,3 +792,25 @@ export function resolveConfig(
791792
export function isBrowserEnabled(config: ResolvedConfig): boolean {
792793
return Boolean(config.browser?.enabled)
793794
}
795+
796+
export function resolveCoverageReporters(configReporters: NonNullable<BaseCoverageOptions['reporter']>): CoverageReporterWithOptions[] {
797+
// E.g. { reporter: "html" }
798+
if (!Array.isArray(configReporters)) {
799+
return [[configReporters, {}]]
800+
}
801+
802+
const resolvedReporters: CoverageReporterWithOptions[] = []
803+
804+
for (const reporter of configReporters) {
805+
if (Array.isArray(reporter)) {
806+
// E.g. { reporter: [ ["html", { skipEmpty: true }], ["lcov"], ["json", { file: "map.json" }] ]}
807+
resolvedReporters.push([reporter[0], reporter[1] as Record<string, unknown> || {}])
808+
}
809+
else {
810+
// E.g. { reporter: ["html", "json"]}
811+
resolvedReporters.push([reporter, {}])
812+
}
813+
}
814+
815+
return resolvedReporters
816+
}

packages/vitest/src/node/types/coverage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export interface CoverageProviderModule {
7878

7979
export type CoverageReporter = keyof ReportOptions | (string & {})
8080

81-
type CoverageReporterWithOptions<
81+
export type CoverageReporterWithOptions<
8282
ReporterName extends CoverageReporter = CoverageReporter,
8383
> = ReporterName extends keyof ReportOptions
8484
? ReportOptions[ReporterName] extends never

packages/vitest/src/utils/coverage.ts

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { relative } from 'pathe'
22
import mm from 'micromatch'
33
import type { CoverageMap } from 'istanbul-lib-coverage'
44
import type { BaseCoverageOptions, ResolvedCoverageOptions } from '../node/types/coverage'
5+
import { resolveCoverageReporters } from '../node/config/resolveConfig'
56

67
type Threshold = 'lines' | 'functions' | 'statements' | 'branches'
78

@@ -242,25 +243,7 @@ export class BaseCoverageProvider {
242243
resolveReporters(
243244
configReporters: NonNullable<BaseCoverageOptions['reporter']>,
244245
): ResolvedCoverageOptions['reporter'] {
245-
// E.g. { reporter: "html" }
246-
if (!Array.isArray(configReporters)) {
247-
return [[configReporters, {}]]
248-
}
249-
250-
const resolvedReporters: ResolvedCoverageOptions['reporter'] = []
251-
252-
for (const reporter of configReporters) {
253-
if (Array.isArray(reporter)) {
254-
// E.g. { reporter: [ ["html", { skipEmpty: true }], ["lcov"], ["json", { file: "map.json" }] ]}
255-
resolvedReporters.push([reporter[0], reporter[1] as Record<string, unknown> || {}])
256-
}
257-
else {
258-
// E.g. { reporter: ["html", "json"]}
259-
resolvedReporters.push([reporter, {}])
260-
}
261-
}
262-
263-
return resolvedReporters
246+
return resolveCoverageReporters(configReporters) as any
264247
}
265248

266249
hasTerminalReporter(reporters: ResolvedCoverageOptions['reporter']) {

0 commit comments

Comments
 (0)