@@ -13,7 +13,14 @@ import { createRsbuildServer, prepareRsbuild } from './rsbuild';
13
13
import type { Rstest } from './rstest' ;
14
14
15
15
export async function runTests ( context : Rstest ) : Promise < void > {
16
- const { rootPath, reporters, projects, snapshotManager, command } = context ;
16
+ const {
17
+ rootPath,
18
+ reporters,
19
+ projects,
20
+ snapshotManager,
21
+ command,
22
+ normalizedConfig : { coverage } ,
23
+ } = context ;
17
24
18
25
const entriesCache = new Map <
19
26
string ,
@@ -97,17 +104,14 @@ export async function runTests(context: Rstest): Promise<void> {
97
104
} ) ;
98
105
99
106
// Initialize coverage collector
100
- const coverageProvider = context . normalizedConfig . coverage . enabled
101
- ? await createCoverageProvider (
102
- context . normalizedConfig . coverage || { } ,
103
- context . rootPath ,
104
- )
107
+ const coverageProvider = coverage . enabled
108
+ ? await createCoverageProvider ( coverage , context . rootPath )
105
109
: null ;
106
110
107
111
if ( coverageProvider ) {
108
112
logger . log (
109
113
` ${ color . gray ( 'Coverage enabled with' ) } %s\n` ,
110
- color . yellow ( context . normalizedConfig . coverage . provider ) ,
114
+ color . yellow ( coverage . provider ) ,
111
115
) ;
112
116
}
113
117
@@ -250,7 +254,9 @@ export async function runTests(context: Rstest): Promise<void> {
250
254
}
251
255
}
252
256
253
- if ( results . some ( ( r ) => r . status === 'fail' ) ) {
257
+ const isFailure = results . some ( ( r ) => r . status === 'fail' ) ;
258
+
259
+ if ( isFailure ) {
254
260
process . exitCode = 1 ;
255
261
}
256
262
@@ -268,7 +274,7 @@ export async function runTests(context: Rstest): Promise<void> {
268
274
}
269
275
270
276
// Generate coverage reports after all tests complete
271
- if ( coverageProvider ) {
277
+ if ( coverageProvider && ( ! isFailure || coverage . reportOnFailure ) ) {
272
278
const { generateCoverage } = await import ( '../coverage/generate' ) ;
273
279
274
280
await generateCoverage ( context , results , coverageProvider ) ;
0 commit comments