@@ -76,18 +76,48 @@ export async function loadConfig({
76
76
return { content : content as RstestConfig , filePath : configFilePath } ;
77
77
}
78
78
79
- export const mergeRstestConfig = ( ...configs : RstestConfig [ ] ) : RstestConfig =>
80
- mergeRsbuildConfig < RstestConfig > ( ...configs ) ;
79
+ export const mergeRstestConfig = ( ...configs : RstestConfig [ ] ) : RstestConfig => {
80
+ return configs . reduce < RstestConfig > ( ( result , config ) => {
81
+ const merged = mergeRsbuildConfig ( result , {
82
+ ...config ,
83
+ exclude : Array . isArray ( config . exclude )
84
+ ? {
85
+ patterns : config . exclude ,
86
+ override : false ,
87
+ }
88
+ : config . exclude ,
89
+ } ) ;
90
+
91
+ if ( ! Array . isArray ( config . exclude ) && config . exclude ?. override ) {
92
+ merged . exclude = {
93
+ patterns : config . exclude . patterns ,
94
+ } ;
95
+ }
96
+
97
+ // The following configurations need overrides
98
+ merged . include = config . include ?? merged . include ;
99
+ merged . reporters = config . reporters ?? merged . reporters ;
100
+ if ( merged . coverage ) {
101
+ merged . coverage . reporters =
102
+ config . coverage ?. reporters ?? merged . coverage ?. reporters ;
103
+ }
104
+
105
+ return merged ;
106
+ } , { } ) ;
107
+ } ;
81
108
82
109
const createDefaultConfig = ( ) : NormalizedConfig => ( {
83
110
root : process . cwd ( ) ,
84
111
name : 'rstest' ,
85
112
include : [ '**/*.{test,spec}.?(c|m)[jt]s?(x)' ] ,
86
- exclude : [
87
- '**/node_modules/**' ,
88
- '**/dist/**' ,
89
- '**/.{idea,git,cache,output,temp}/**' ,
90
- ] ,
113
+ exclude : {
114
+ patterns : [
115
+ '**/node_modules/**' ,
116
+ '**/dist/**' ,
117
+ '**/.{idea,git,cache,output,temp}/**' ,
118
+ ] ,
119
+ override : false ,
120
+ } ,
91
121
setupFiles : [ ] ,
92
122
includeSource : [ ] ,
93
123
pool : {
@@ -145,15 +175,9 @@ export const withDefaultConfig = (config: RstestConfig): NormalizedConfig => {
145
175
) as NormalizedConfig ;
146
176
147
177
merged . setupFiles = castArray ( merged . setupFiles ) ;
148
- // The following configurations need overrides
149
- merged . include = config . include || merged . include ;
150
- merged . exclude = ( config . exclude || merged . exclude || [ ] ) . concat ( [
151
- TEMP_RSTEST_OUTPUT_DIR_GLOB ,
152
- ] ) ;
153
- merged . reporters = config . reporters ?? merged . reporters ;
154
-
155
- merged . coverage . reporters =
156
- config . coverage ?. reporters ?? merged . coverage ?. reporters ;
178
+
179
+ merged . exclude . patterns . push ( TEMP_RSTEST_OUTPUT_DIR_GLOB ) ;
180
+
157
181
const reportsDirectory = formatRootStr (
158
182
merged . coverage . reportsDirectory ,
159
183
merged . root ,
@@ -172,7 +196,12 @@ export const withDefaultConfig = (config: RstestConfig): NormalizedConfig => {
172
196
return {
173
197
...merged ,
174
198
include : merged . include . map ( ( p ) => formatRootStr ( p , merged . root ) ) ,
175
- exclude : merged . exclude . map ( ( p ) => formatRootStr ( p , merged . root ) ) ,
199
+ exclude : {
200
+ ...merged . exclude ,
201
+ patterns : merged . exclude . patterns . map ( ( p ) =>
202
+ formatRootStr ( p , merged . root ) ,
203
+ ) ,
204
+ } ,
176
205
setupFiles : merged . setupFiles . map ( ( p ) => formatRootStr ( p , merged . root ) ) ,
177
206
includeSource : merged . includeSource . map ( ( p ) =>
178
207
formatRootStr ( p , merged . root ) ,
0 commit comments