1
- import { describe , expectTypeOf , test } from 'vitest'
2
- import { type UserWorkspaceConfig , defineConfig , defineProject , defineWorkspace , mergeConfig } from 'vitest/config'
1
+ import { assertType , describe , expectTypeOf , test } from 'vitest'
2
+ import { defineConfig , defineProject , defineWorkspace , mergeConfig } from 'vitest/config'
3
3
4
4
const expectMainTestConfig = expectTypeOf ( defineConfig ) . parameter ( 0 ) . resolves . toHaveProperty ( 'test' ) . exclude < undefined > ( )
5
5
const expectProjectTestConfig = expectTypeOf ( defineProject ) . parameter ( 0 ) . resolves . toHaveProperty ( 'test' ) . exclude < undefined > ( )
@@ -26,9 +26,76 @@ describe('merge config helper', () => {
26
26
} )
27
27
} )
28
28
29
- describe ( 'workspace config' , ( ) => {
30
- test ( 'correctly defines return type' , ( ) => {
31
- expectTypeOf ( defineWorkspace ( [ { test : { name : 'test' } } ] ) ) . items . toMatchTypeOf < UserWorkspaceConfig > ( )
32
- expectTypeOf ( defineWorkspace ( [ 'packages/*' ] ) ) . items . toBeString ( )
29
+ describe ( 'define workspace helper' , ( ) => {
30
+ type DefineWorkspaceParameter = Parameters < typeof defineWorkspace > [ 0 ]
31
+
32
+ test ( 'allows string' , ( ) => {
33
+ assertType < DefineWorkspaceParameter > ( [ './path/to/workspace' ] )
34
+ } )
35
+
36
+ test ( 'allows config object' , ( ) => {
37
+ assertType < DefineWorkspaceParameter > ( [ {
38
+ test : {
39
+ name : 'Workspace Project #1' ,
40
+ include : [ 'string' ] ,
41
+
42
+ // @ts -expect-error -- Not allowed here
43
+ coverage : { } ,
44
+ } ,
45
+ } ] )
46
+ } )
47
+
48
+ test ( 'allows mixing strings and config objects' , ( ) => {
49
+ assertType < DefineWorkspaceParameter > ( [
50
+ './path/to/project' ,
51
+ {
52
+ test : {
53
+ name : 'Workspace Project #1' ,
54
+ include : [ 'string' ] ,
55
+
56
+ // @ts -expect-error -- Not allowed here
57
+ coverage : { } ,
58
+ } ,
59
+ } ,
60
+ './path/to/another/project' ,
61
+ {
62
+ extends : 'workspace custom field' ,
63
+ test : {
64
+ name : 'Workspace Project #2' ,
65
+ include : [ 'string' ] ,
66
+
67
+ // @ts -expect-error -- Not allowed here
68
+ coverage : { } ,
69
+ } ,
70
+ } ,
71
+ ] )
72
+ } )
73
+
74
+ test ( 'return type matches parameters' , ( ) => {
75
+ expectTypeOf ( defineWorkspace ) . returns . toMatchTypeOf < DefineWorkspaceParameter > ( )
76
+
77
+ expectTypeOf ( defineWorkspace ( [
78
+ './path/to/project' ,
79
+ {
80
+ test : {
81
+ name : 'Workspace Project #1' ,
82
+ include : [ 'string' ] ,
83
+
84
+ // @ts -expect-error -- Not allowed here
85
+ coverage : { } ,
86
+ } ,
87
+ } ,
88
+ './path/to/another/project' ,
89
+ {
90
+ extends : 'workspace custom field' ,
91
+ test : {
92
+ name : 'Workspace Project #2' ,
93
+ include : [ 'string' ] ,
94
+
95
+ // @ts -expect-error -- Not allowed here
96
+ coverage : { } ,
97
+ } ,
98
+ } ,
99
+ ] ) ) . items . toMatchTypeOf < DefineWorkspaceParameter [ number ] > ( )
33
100
} )
34
101
} )
0 commit comments