@@ -24,6 +24,7 @@ import { RandomSequencer } from '../sequencers/RandomSequencer'
2424import type { BenchmarkBuiltinReporters } from '../reporters'
2525import { builtinPools } from '../pool'
2626import type { Logger } from '../logger'
27+ import type { BaseCoverageOptions , CoverageReporterWithOptions } from '../types/coverage'
2728
2829function 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(
791792export 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+ }
0 commit comments