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'
33
44const expectMainTestConfig = expectTypeOf ( defineConfig ) . parameter ( 0 ) . resolves . toHaveProperty ( 'test' ) . exclude < undefined > ( )
55const expectProjectTestConfig = expectTypeOf ( defineProject ) . parameter ( 0 ) . resolves . toHaveProperty ( 'test' ) . exclude < undefined > ( )
@@ -26,9 +26,76 @@ describe('merge config helper', () => {
2626 } )
2727} )
2828
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 ] > ( )
33100 } )
34101} )
0 commit comments