@@ -26,6 +26,39 @@ test('enableCoverage() collects coverage after being called', async () => {
2626 expect ( coverageMap . files ( ) ) . toContain ( '<process-cwd>/fixtures/src/math.ts' )
2727} )
2828
29+ test ( 'enableCoverage() invalidates circular modules' , async ( ) => {
30+ await cleanupCoverageJson ( )
31+
32+ await expect ( readCoverageMap ( ) , 'coverage map should not be on the disk' ) . rejects . toThrowError ( / n o s u c h f i l e / )
33+
34+ // Simulating user actions in the VSCode Vitest extension:
35+ // 1. User clicks "Run Test with Coverage" to generate coverage files normally
36+ const { ctx } = await runVitest ( {
37+ include : [ 'fixtures/test/circular.test.ts' ] ,
38+ watch : false ,
39+ coverage : {
40+ enabled : true ,
41+ reporter : 'json' ,
42+ } ,
43+ } )
44+
45+ const coverageMap = await readCoverageMap ( )
46+ expect ( coverageMap . files ( ) ) . toEqual ( [
47+ '<process-cwd>/fixtures/src/circularA.ts' ,
48+ '<process-cwd>/fixtures/src/circularB.ts' ,
49+ ] )
50+
51+ // 2. User reruns tests with coverage
52+ await ctx ! . enableCoverage ( )
53+ await ctx ! . rerunFiles ( )
54+
55+ const coverageMap2 = await readCoverageMap ( )
56+ expect ( coverageMap2 . files ( ) ) . toEqual ( [
57+ '<process-cwd>/fixtures/src/circularA.ts' ,
58+ '<process-cwd>/fixtures/src/circularB.ts' ,
59+ ] )
60+ } )
61+
2962test ( 'disableCoverage() stops collecting coverage going forward' , async ( ) => {
3063 const { ctx } = await runVitest ( {
3164 include : [ 'fixtures/test/math.test.ts' ] ,
0 commit comments