@@ -2,7 +2,7 @@ import { existsSync, promises as fs } from 'fs'
22import _url from 'url'
33import type { Profiler } from 'inspector'
44import { takeCoverage } from 'v8'
5- import { resolve } from 'pathe'
5+ import { extname , resolve } from 'pathe'
66import type { RawSourceMap } from 'vite-node'
77import { configDefaults } from 'vitest/config'
88// eslint-disable-next-line no-restricted-imports
@@ -53,6 +53,7 @@ export class C8CoverageProvider implements CoverageProvider {
5353
5454 // add source maps
5555 const sourceMapMeta : Record < SourceMapMeta [ 'url' ] , MapAndSource > = { }
56+ const extensions = Array . isArray ( this . options . extension ) ? this . options . extension : [ this . options . extension ]
5657
5758 const entries = Array
5859 . from ( this . ctx . vitenode . fetchCache . entries ( ) )
@@ -62,10 +63,13 @@ export class C8CoverageProvider implements CoverageProvider {
6263 return null
6364
6465 const filepath = file . split ( '?' ) [ 0 ]
66+ const url = _url . pathToFileURL ( filepath ) . href
67+ const extension = extname ( file ) || extname ( url )
6568
6669 return {
6770 filepath,
68- url : _url . pathToFileURL ( filepath ) . href ,
71+ url,
72+ extension,
6973 map : result . map ,
7074 source : result . code ,
7175 }
@@ -74,6 +78,9 @@ export class C8CoverageProvider implements CoverageProvider {
7478 if ( ! entry )
7579 return false
7680
81+ if ( ! extensions . includes ( entry . extension ) )
82+ return false
83+
7784 // Mappings and sourcesContent are needed for C8 to work
7885 return (
7986 entry . map . mappings . length > 0
@@ -84,6 +91,9 @@ export class C8CoverageProvider implements CoverageProvider {
8491 } ) as SourceMapMeta [ ]
8592
8693 await Promise . all ( entries . map ( async ( { url, source, map, filepath } ) => {
94+ if ( url in sourceMapMeta )
95+ return
96+
8797 let code : string | undefined
8898 try {
8999 code = ( await fs . readFile ( filepath ) ) . toString ( )
0 commit comments