7
7
type VitestConfigFactoryOptions ,
8
8
type VitestOverrides ,
9
9
createVitestConfig ,
10
+ getProjectRootPath ,
10
11
} from './vitest-config-factory.js' ;
11
12
12
13
// Only mock defineConfig - assume it works correctly, we're not testing Vite
@@ -27,17 +28,11 @@ vi.mock('./vitest-tsconfig-path-aliases.js', () => ({
27
28
const MOCK_PROJECT_ROOT_STRING = '/Users/test/project' ;
28
29
const MOCK_PROJECT_ROOT_URL = pathToFileURL ( `${ MOCK_PROJECT_ROOT_STRING } /` ) ;
29
30
30
- // Cross-platform path helpers to match what the actual code generates
31
+ // Simple path helpers - just use them directly in tests!
31
32
const mockPath = ( ...segments : string [ ] ) =>
32
33
path . resolve ( MOCK_PROJECT_ROOT_STRING , ...segments ) ;
33
- const mockCacheDir = ( name : string ) => mockPath ( 'node_modules' , '.vite' , name ) ;
34
- const mockVitestCacheDir = ( ) => mockPath ( 'node_modules' , '.vitest' ) ;
35
- const mockGlobalSetup = ( ) => mockPath ( 'global-setup.ts' ) ;
36
- const mockReportsDir = ( projectKey : string , kind : string ) =>
37
- kind === 'e2e'
38
- ? mockPath ( 'e2e' , projectKey , '.coverage' )
39
- : mockPath ( 'packages' , projectKey , '.coverage' , `${ kind } -tests` ) ;
40
- const mockSetupFile = mockPath ;
34
+ const mockUrlPath = ( url : URL , ...segments : string [ ] ) =>
35
+ path . resolve ( getProjectRootPath ( url ) , ...segments ) ;
41
36
42
37
const TEST_TIMEOUTS = {
43
38
SHORT : 5000 ,
@@ -74,23 +69,28 @@ describe('createVitestConfig', () => {
74
69
75
70
expect ( config ) . toEqual (
76
71
expect . objectContaining ( {
77
- cacheDir : mockCacheDir ( 'test-package' ) ,
72
+ cacheDir : mockPath ( 'node_modules' , '.vite' , 'test-package' ) ,
78
73
test : expect . objectContaining ( {
79
74
reporters : [ 'basic' ] ,
80
75
globals : true ,
81
76
cache : {
82
- dir : mockVitestCacheDir ( ) ,
77
+ dir : mockPath ( 'node_modules' , '.vitest' ) ,
83
78
} ,
84
79
alias : expect . any ( Object ) ,
85
80
pool : 'threads' ,
86
81
poolOptions : { threads : { singleThread : true } } ,
87
82
environment : 'node' ,
88
83
include : EXPECTED_INCLUDES . unit ,
89
- globalSetup : [ mockGlobalSetup ( ) ] ,
84
+ globalSetup : [ mockPath ( 'global-setup.ts' ) ] ,
90
85
setupFiles : [ ] ,
91
86
coverage : expect . objectContaining ( {
92
87
reporter : [ 'text' , 'lcov' ] ,
93
- reportsDirectory : mockReportsDir ( 'test-package' , 'unit' ) ,
88
+ reportsDirectory : mockPath (
89
+ 'packages' ,
90
+ 'test-package' ,
91
+ '.coverage' ,
92
+ 'unit-tests' ,
93
+ ) ,
94
94
exclude : DEFAULT_EXCLUDES ,
95
95
} ) ,
96
96
} ) ,
@@ -111,10 +111,17 @@ describe('createVitestConfig', () => {
111
111
112
112
expect ( config ) . toEqual (
113
113
expect . objectContaining ( {
114
- cacheDir : mockCacheDir ( 'test-package' ) ,
114
+ cacheDir : mockUrlPath (
115
+ MOCK_PROJECT_ROOT_URL ,
116
+ 'node_modules' ,
117
+ '.vite' ,
118
+ 'test-package' ,
119
+ ) ,
115
120
test : expect . objectContaining ( {
116
121
include : EXPECTED_INCLUDES . unit ,
117
- globalSetup : [ mockGlobalSetup ( ) ] ,
122
+ globalSetup : [
123
+ mockUrlPath ( MOCK_PROJECT_ROOT_URL , 'global-setup.ts' ) ,
124
+ ] ,
118
125
} ) ,
119
126
} ) ,
120
127
) ;
@@ -161,9 +168,14 @@ describe('createVitestConfig', () => {
161
168
expect . objectContaining ( {
162
169
test : expect . objectContaining ( {
163
170
include : EXPECTED_INCLUDES . int ,
164
- globalSetup : [ mockGlobalSetup ( ) ] ,
171
+ globalSetup : [ mockPath ( 'global-setup.ts' ) ] ,
165
172
coverage : expect . objectContaining ( {
166
- reportsDirectory : mockReportsDir ( 'test-package' , 'int' ) ,
173
+ reportsDirectory : mockPath (
174
+ 'packages' ,
175
+ 'test-package' ,
176
+ '.coverage' ,
177
+ 'int-tests' ,
178
+ ) ,
167
179
} ) ,
168
180
} ) ,
169
181
} ) ,
@@ -215,7 +227,7 @@ describe('createVitestConfig', () => {
215
227
globalSetup : undefined ,
216
228
coverage : expect . objectContaining ( {
217
229
reporter : [ 'text' , 'lcov' ] ,
218
- reportsDirectory : mockReportsDir ( ' test-package', 'e2e ' ) ,
230
+ reportsDirectory : mockPath ( 'e2e' , ' test-package', '.coverage ' ) ,
219
231
exclude : DEFAULT_EXCLUDES ,
220
232
} ) ,
221
233
} ) ,
@@ -237,7 +249,7 @@ describe('createVitestConfig', () => {
237
249
238
250
expect ( config ) . toEqual (
239
251
expect . objectContaining ( {
240
- cacheDir : mockCacheDir ( 'custom-cache-key' ) ,
252
+ cacheDir : mockPath ( 'node_modules' , '.vite' , 'custom-cache-key' ) ,
241
253
} ) ,
242
254
) ;
243
255
} ) ;
@@ -253,7 +265,7 @@ describe('createVitestConfig', () => {
253
265
254
266
expect ( config ) . toEqual (
255
267
expect . objectContaining ( {
256
- cacheDir : mockCacheDir ( 'test-package' ) ,
268
+ cacheDir : mockPath ( 'node_modules' , '.vite' , 'test-package' ) ,
257
269
} ) ,
258
270
) ;
259
271
} ) ;
@@ -278,7 +290,7 @@ describe('createVitestConfig', () => {
278
290
expect ( config ) . toEqual (
279
291
expect . objectContaining ( {
280
292
test : expect . objectContaining ( {
281
- setupFiles : [ mockSetupFile ( 'setup.ts' ) ] ,
293
+ setupFiles : [ mockPath ( 'setup.ts' ) ] ,
282
294
} ) ,
283
295
} ) ,
284
296
) ;
@@ -302,10 +314,7 @@ describe('createVitestConfig', () => {
302
314
expect ( config ) . toEqual (
303
315
expect . objectContaining ( {
304
316
test : expect . objectContaining ( {
305
- setupFiles : [
306
- mockSetupFile ( 'setup1.ts' ) ,
307
- mockSetupFile ( 'setup2.ts' ) ,
308
- ] ,
317
+ setupFiles : [ mockPath ( 'setup1.ts' ) , mockPath ( 'setup2.ts' ) ] ,
309
318
} ) ,
310
319
} ) ,
311
320
) ;
@@ -330,9 +339,9 @@ describe('createVitestConfig', () => {
330
339
expect . objectContaining ( {
331
340
test : expect . objectContaining ( {
332
341
setupFiles : [
333
- mockSetupFile ( 'setup1.ts' ) ,
334
- mockSetupFile ( 'setup2.ts' ) ,
335
- mockSetupFile ( 'setup3.ts' ) ,
342
+ mockPath ( 'setup1.ts' ) ,
343
+ mockPath ( 'setup2.ts' ) ,
344
+ mockPath ( 'setup3.ts' ) ,
336
345
] ,
337
346
} ) ,
338
347
} ) ,
@@ -405,7 +414,12 @@ describe('createVitestConfig', () => {
405
414
test : expect . objectContaining ( {
406
415
coverage : expect . objectContaining ( {
407
416
reporter : [ 'text' , 'lcov' ] ,
408
- reportsDirectory : mockReportsDir ( 'test-package' , 'unit' ) ,
417
+ reportsDirectory : mockPath (
418
+ 'packages' ,
419
+ 'test-package' ,
420
+ '.coverage' ,
421
+ 'unit-tests' ,
422
+ ) ,
409
423
exclude : [ ...DEFAULT_EXCLUDES , 'custom/**' , 'ignore/**' ] ,
410
424
} ) ,
411
425
} ) ,
@@ -435,7 +449,12 @@ describe('createVitestConfig', () => {
435
449
test : expect . objectContaining ( {
436
450
coverage : expect . objectContaining ( {
437
451
reporter : [ 'text' , 'lcov' ] ,
438
- reportsDirectory : mockReportsDir ( 'test-package' , 'unit' ) ,
452
+ reportsDirectory : mockPath (
453
+ 'packages' ,
454
+ 'test-package' ,
455
+ '.coverage' ,
456
+ 'unit-tests' ,
457
+ ) ,
439
458
exclude : DEFAULT_EXCLUDES ,
440
459
} ) ,
441
460
} ) ,
@@ -492,7 +511,12 @@ describe('createVitestConfig', () => {
492
511
const config = createVitestConfig ( options , overrides ) ;
493
512
expectCoverageConfig ( config , {
494
513
reporter : [ 'text' , 'lcov' , 'html' , 'json' ] ,
495
- reportsDirectory : mockReportsDir ( 'test-package' , 'unit' ) ,
514
+ reportsDirectory : mockPath (
515
+ 'packages' ,
516
+ 'test-package' ,
517
+ '.coverage' ,
518
+ 'unit-tests' ,
519
+ ) ,
496
520
exclude : [ ...DEFAULT_EXCLUDES , 'custom/**' ] ,
497
521
thresholds : {
498
522
global : {
@@ -548,9 +572,7 @@ describe('createVitestConfig', () => {
548
572
const config = createVitestConfig ( options , overrides ) ;
549
573
550
574
const testConfig = ( config as any ) . test ;
551
- expect ( testConfig . setupFiles ) . toEqual ( [
552
- mockSetupFile ( 'should-be-removed.ts' ) ,
553
- ] ) ;
575
+ expect ( testConfig . setupFiles ) . toEqual ( [ mockPath ( 'should-be-removed.ts' ) ] ) ;
554
576
expect ( testConfig . testTimeout ) . toBe ( TEST_TIMEOUTS . SHORT ) ;
555
577
expect ( testConfig . pool ) . toBe ( 'forks' ) ;
556
578
} ) ;
@@ -592,7 +614,12 @@ describe('createVitestConfig', () => {
592
614
expect ( ( config as any ) . test . testTimeout ) . toBe ( TEST_TIMEOUTS . SHORT ) ;
593
615
expectCoverageConfig ( config , {
594
616
reporter : [ 'text' , 'lcov' ] ,
595
- reportsDirectory : mockReportsDir ( 'test-package' , 'unit' ) ,
617
+ reportsDirectory : mockPath (
618
+ 'packages' ,
619
+ 'test-package' ,
620
+ '.coverage' ,
621
+ 'unit-tests' ,
622
+ ) ,
596
623
exclude : DEFAULT_EXCLUDES ,
597
624
} ) ;
598
625
} ) ;
@@ -616,7 +643,12 @@ describe('createVitestConfig', () => {
616
643
expect ( ( config as any ) . test . testTimeout ) . toBe ( TEST_TIMEOUTS . SHORT ) ;
617
644
expectCoverageConfig ( config , {
618
645
reporter : [ 'text' , 'lcov' ] ,
619
- reportsDirectory : mockReportsDir ( 'test-package' , 'unit' ) ,
646
+ reportsDirectory : mockPath (
647
+ 'packages' ,
648
+ 'test-package' ,
649
+ '.coverage' ,
650
+ 'unit-tests' ,
651
+ ) ,
620
652
exclude : DEFAULT_EXCLUDES ,
621
653
} ) ;
622
654
} ) ;
@@ -645,7 +677,7 @@ describe('createVitestConfig', () => {
645
677
expectedIncludes [ kind ] ,
646
678
) ;
647
679
expect ( ( config as any ) . test . globalSetup ) . toStrictEqual (
648
- kind === 'e2e' ? undefined : [ mockGlobalSetup ( ) ] ,
680
+ kind === 'e2e' ? undefined : [ mockPath ( 'global-setup.ts' ) ] ,
649
681
) ;
650
682
} ) ;
651
683
} ) ;
@@ -686,21 +718,23 @@ describe('createVitestConfig', () => {
686
718
687
719
expect ( config ) . toEqual (
688
720
expect . objectContaining ( {
689
- cacheDir : ` ${ MOCK_PROJECT_ROOT_STRING } / node_modules/ .vite/ complex-scenario` ,
721
+ cacheDir : mockPath ( ' node_modules' , ' .vite' , ' complex-scenario' ) ,
690
722
build : {
691
723
target : 'es2020' ,
692
724
} ,
693
725
test : expect . objectContaining ( {
694
- setupFiles : [
695
- mockSetupFile ( 'setup1.ts' ) ,
696
- mockSetupFile ( 'setup2.ts' ) ,
697
- ] ,
726
+ setupFiles : [ mockPath ( 'setup1.ts' ) , mockPath ( 'setup2.ts' ) ] ,
698
727
testTimeout : TEST_TIMEOUTS . LONG ,
699
728
environment : 'jsdom' ,
700
729
include : EXPECTED_INCLUDES . int ,
701
730
coverage : expect . objectContaining ( {
702
731
exclude : [ 'mocks/**' , '**/types.ts' , 'e2e/**' , 'dist/**' ] ,
703
- reportsDirectory : mockReportsDir ( 'test-package' , 'int' ) ,
732
+ reportsDirectory : mockPath (
733
+ 'packages' ,
734
+ 'test-package' ,
735
+ '.coverage' ,
736
+ 'int-tests' ,
737
+ ) ,
704
738
} ) ,
705
739
} ) ,
706
740
} ) ,
0 commit comments