@@ -13,80 +13,86 @@ import {
1313 getCoveragePathsForTarget ,
1414} from './coverage-paths.js' ;
1515
16- vi . mock ( 'bundle-require' , ( ) => ( {
17- bundleRequire : vi . fn ( ) . mockImplementation ( ( options : { filepath : string } ) => {
18- const VITEST_VALID : VitestCoverageConfig = {
19- test : {
20- coverage : {
21- reporter : [ 'lcov' ] ,
22- reportsDirectory : path . join ( 'coverage' , 'cli' ) ,
23- } ,
16+ // mock importModule from @code -pushup/utils to bypass jiti which doesn't work with memfs
17+ vi . mock ( '@code-pushup/utils' , async ( ) => {
18+ const utils : object = await vi . importActual ( '@code-pushup/utils' ) ;
19+
20+ const VITEST_VALID : VitestCoverageConfig = {
21+ test : {
22+ coverage : {
23+ reporter : [ 'lcov' ] ,
24+ reportsDirectory : path . join ( 'coverage' , 'cli' ) ,
2425 } ,
25- } ;
26+ } ,
27+ } ;
2628
27- const VITEST_NO_DIR : VitestCoverageConfig = {
28- test : { coverage : { reporter : [ 'lcov' ] } } ,
29- } ;
29+ const VITEST_NO_DIR : VitestCoverageConfig = {
30+ test : { coverage : { reporter : [ 'lcov' ] } } ,
31+ } ;
3032
31- const VITEST_NO_LCOV : VitestCoverageConfig = {
32- test : {
33- coverage : {
34- reporter : [ 'json' ] ,
35- reportsDirectory : 'coverage' ,
36- } ,
33+ const VITEST_NO_LCOV : VitestCoverageConfig = {
34+ test : {
35+ coverage : {
36+ reporter : [ 'json' ] ,
37+ reportsDirectory : 'coverage' ,
3738 } ,
38- } ;
39+ } ,
40+ } ;
3941
40- const JEST_VALID : JestCoverageConfig = {
41- coverageReporters : [ 'lcov' ] ,
42- coverageDirectory : path . join ( 'coverage' , 'core' ) ,
43- } ;
42+ const JEST_VALID : JestCoverageConfig = {
43+ coverageReporters : [ 'lcov' ] ,
44+ coverageDirectory : path . join ( 'coverage' , 'core' ) ,
45+ } ;
4446
45- const JEST_NO_DIR : JestCoverageConfig = {
46- coverageReporters : [ 'lcov' ] ,
47- } ;
47+ const JEST_NO_DIR : JestCoverageConfig = {
48+ coverageReporters : [ 'lcov' ] ,
49+ } ;
4850
49- const JEST_NO_LCOV : JestCoverageConfig = {
50- coverageReporters : [ 'json' ] ,
51- coverageDirectory : 'coverage' ,
52- } ;
51+ const JEST_NO_LCOV : JestCoverageConfig = {
52+ coverageReporters : [ 'json' ] ,
53+ coverageDirectory : 'coverage' ,
54+ } ;
5355
54- const JEST_PRESET : JestCoverageConfig & { preset ?: string } = {
55- preset : '../../jest.preset.ts' ,
56- coverageDirectory : 'coverage' ,
57- } ;
56+ const JEST_PRESET : JestCoverageConfig & { preset ?: string } = {
57+ preset : '../../jest.preset.ts' ,
58+ coverageDirectory : 'coverage' ,
59+ } ;
5860
59- const wrapReturnValue = (
60- value : VitestCoverageConfig | JestCoverageConfig ,
61- ) => ( { mod : { default : value } } ) ;
62-
63- const config = options . filepath . split ( '.' ) [ 0 ] ;
64- switch ( config ) {
65- case 'vitest-valid' :
66- return wrapReturnValue ( VITEST_VALID ) ;
67- case 'vitest-no-lcov' :
68- return wrapReturnValue ( VITEST_NO_LCOV ) ;
69- case 'vitest-no-dir' :
70- return wrapReturnValue ( VITEST_NO_DIR ) ;
71- case 'jest-valid' :
72- return wrapReturnValue ( JEST_VALID ) ;
73- case 'jest-no-lcov' :
74- return wrapReturnValue ( JEST_NO_LCOV ) ;
75- case 'jest-no-dir' :
76- return wrapReturnValue ( JEST_NO_DIR ) ;
77- case 'jest-preset' :
78- return wrapReturnValue ( JEST_PRESET ) ;
79- default :
80- return wrapReturnValue ( { } ) ;
81- }
82- } ) ,
83- } ) ) ;
61+ return {
62+ ...utils ,
63+ importModule : vi
64+ . fn ( )
65+ . mockImplementation ( ( options : { filepath : string } ) => {
66+ // Extract config name from filename (handles both absolute and relative paths)
67+ const filename = path . basename ( options . filepath ) ;
68+ const config = filename . split ( '.' ) [ 0 ] ;
69+ switch ( config ) {
70+ case 'vitest-valid' :
71+ return Promise . resolve ( VITEST_VALID ) ;
72+ case 'vitest-no-lcov' :
73+ return Promise . resolve ( VITEST_NO_LCOV ) ;
74+ case 'vitest-no-dir' :
75+ return Promise . resolve ( VITEST_NO_DIR ) ;
76+ case 'jest-valid' :
77+ return Promise . resolve ( JEST_VALID ) ;
78+ case 'jest-no-lcov' :
79+ return Promise . resolve ( JEST_NO_LCOV ) ;
80+ case 'jest-no-dir' :
81+ return Promise . resolve ( JEST_NO_DIR ) ;
82+ case 'jest-preset' :
83+ return Promise . resolve ( JEST_PRESET ) ;
84+ default :
85+ return Promise . resolve ( { } ) ;
86+ }
87+ } ) ,
88+ } ;
89+ } ) ;
8490
8591describe ( 'getCoveragePathForTarget' , ( ) => {
8692 beforeEach ( ( ) => {
8793 vol . fromJSON (
8894 {
89- // values come from bundle-require mock above
95+ // values come from importModule mock above
9096 'vitest-valid.config.ts' : '' ,
9197 'jest-valid.config.ts' : '' ,
9298 } ,
@@ -162,7 +168,7 @@ describe('getCoveragePathForVitest', () => {
162168 beforeEach ( ( ) => {
163169 vol . fromJSON (
164170 {
165- // values come from bundle-require mock above
171+ // values come from importModule mock above
166172 'vitest-valid.config.unit.ts' : '' ,
167173 'vitest-no-dir.config.integration.ts' : '' ,
168174 'vitest-no-lcov.config.integration.ts' : '' ,
@@ -260,7 +266,7 @@ describe('getCoveragePathForJest', () => {
260266 beforeEach ( ( ) => {
261267 vol . fromJSON (
262268 {
263- // values come from bundle-require mock above
269+ // values come from importModule mock above
264270 'jest-preset.config.ts' : '' ,
265271 'jest-valid.config.unit.ts' : '' ,
266272 'jest-valid.config.integration.ts' : '' ,
0 commit comments