@@ -150,21 +150,15 @@ export async function runTest(test: Test, runner: VitestRunner) {
150
150
test . result . state = 'pass'
151
151
}
152
152
catch ( e ) {
153
- const error = processError ( e )
154
- test . result . state = 'fail'
155
- test . result . error = error
156
- test . result . errors = [ error ]
153
+ failTask ( test . result , e )
157
154
}
158
155
159
156
try {
160
157
await callSuiteHook ( test . suite , test , 'afterEach' , runner , [ test . context , test . suite ] )
161
158
await callCleanupHooks ( beforeEachCleanups )
162
159
}
163
160
catch ( e ) {
164
- const error = processError ( e )
165
- test . result . state = 'fail'
166
- test . result . error = error
167
- test . result . errors = [ error ]
161
+ failTask ( test . result , e )
168
162
}
169
163
170
164
if ( test . result . state === 'pass' )
@@ -201,6 +195,14 @@ export async function runTest(test: Test, runner: VitestRunner) {
201
195
updateTask ( test , runner )
202
196
}
203
197
198
+ function failTask ( result : TaskResult , err : unknown ) {
199
+ result . state = 'fail'
200
+ const error = processError ( err )
201
+ result . error = error
202
+ result . errors ??= [ ]
203
+ result . errors . push ( error )
204
+ }
205
+
204
206
function markTasksAsSkipped ( suite : Suite , runner : VitestRunner ) {
205
207
suite . tasks . forEach ( ( t ) => {
206
208
t . mode = 'skip'
@@ -229,6 +231,8 @@ export async function runSuite(suite: Suite, runner: VitestRunner) {
229
231
230
232
updateTask ( suite , runner )
231
233
234
+ let beforeAllCleanups : HookCleanupCallback [ ] = [ ]
235
+
232
236
if ( suite . mode === 'skip' ) {
233
237
suite . result . state = 'skip'
234
238
}
@@ -237,7 +241,7 @@ export async function runSuite(suite: Suite, runner: VitestRunner) {
237
241
}
238
242
else {
239
243
try {
240
- const beforeAllCleanups = await callSuiteHook ( suite , suite , 'beforeAll' , runner , [ suite ] )
244
+ beforeAllCleanups = await callSuiteHook ( suite , suite , 'beforeAll' , runner , [ suite ] )
241
245
242
246
if ( runner . runSuite ) {
243
247
await runner . runSuite ( suite )
@@ -262,17 +266,20 @@ export async function runSuite(suite: Suite, runner: VitestRunner) {
262
266
}
263
267
}
264
268
}
265
-
266
- await callSuiteHook ( suite , suite , 'afterAll' , runner , [ suite ] )
267
- await callCleanupHooks ( beforeAllCleanups )
268
269
}
269
270
catch ( e ) {
270
- const error = processError ( e )
271
- suite . result . state = 'fail'
272
- suite . result . error = error
273
- suite . result . errors = [ error ]
271
+ failTask ( suite . result , e )
274
272
}
275
273
}
274
+
275
+ try {
276
+ await callSuiteHook ( suite , suite , 'afterAll' , runner , [ suite ] )
277
+ await callCleanupHooks ( beforeAllCleanups )
278
+ }
279
+ catch ( e ) {
280
+ failTask ( suite . result , e )
281
+ }
282
+
276
283
suite . result . duration = now ( ) - start
277
284
278
285
if ( suite . mode === 'run' ) {
0 commit comments