@@ -386,6 +386,11 @@ export class IstanbulCoverageProvider
386
386
resolve ( this . ctx . config . root , file ) ,
387
387
)
388
388
389
+ const viteNodeServers = [
390
+ this . ctx . vitenode ,
391
+ ...this . ctx . projects . map ( project => project . vitenode ) ,
392
+ ]
393
+
389
394
if ( this . ctx . config . changed ) {
390
395
includedFiles = ( this . ctx . config . related || [ ] ) . filter ( file =>
391
396
includedFiles . includes ( file ) ,
@@ -396,16 +401,29 @@ export class IstanbulCoverageProvider
396
401
. filter ( file => ! coveredFiles . includes ( file ) )
397
402
. sort ( )
398
403
399
- const cacheKey = new Date ( ) . getTime ( )
400
404
const coverageMap = libCoverage . createCoverageMap ( { } )
401
405
406
+ // Make sure file is not served from cache so that instrumenter loads up requested file coverage
407
+ const cacheKey = new Date ( ) . getTime ( )
408
+
402
409
// Note that these cannot be run parallel as synchronous instrumenter.lastFileCoverage
403
410
// returns the coverage of the last transformed file
404
411
for ( const [ index , filename ] of uncoveredFiles . entries ( ) ) {
405
412
debug ( 'Uncovered file %s %d/%d' , filename , index , uncoveredFiles . length )
406
413
407
- // Make sure file is not served from cache so that instrumenter loads up requested file coverage
408
- await this . ctx . vitenode . transformRequest ( `${ filename } ?v=${ cacheKey } ` )
414
+ for ( const vitenode of viteNodeServers ) {
415
+ try {
416
+ await vitenode . transformRequest ( `${ filename } ?v=${ cacheKey } ` )
417
+ continue
418
+ }
419
+ catch ( error ) {
420
+ // Try transforming with next ViteNode server, unless last
421
+ if ( viteNodeServers . indexOf ( vitenode ) === viteNodeServers . length - 1 ) {
422
+ throw error
423
+ }
424
+ }
425
+ }
426
+
409
427
const lastCoverage = this . instrumenter . lastFileCoverage ( )
410
428
coverageMap . addFileCoverage ( lastCoverage )
411
429
}
0 commit comments