@@ -150,21 +150,15 @@ export async function runTest(test: Test, runner: VitestRunner) {
150150 test . result . state = 'pass'
151151 }
152152 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 )
157154 }
158155
159156 try {
160157 await callSuiteHook ( test . suite , test , 'afterEach' , runner , [ test . context , test . suite ] )
161158 await callCleanupHooks ( beforeEachCleanups )
162159 }
163160 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 )
168162 }
169163
170164 if ( test . result . state === 'pass' )
@@ -201,6 +195,14 @@ export async function runTest(test: Test, runner: VitestRunner) {
201195 updateTask ( test , runner )
202196}
203197
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+
204206function markTasksAsSkipped ( suite : Suite , runner : VitestRunner ) {
205207 suite . tasks . forEach ( ( t ) => {
206208 t . mode = 'skip'
@@ -229,6 +231,8 @@ export async function runSuite(suite: Suite, runner: VitestRunner) {
229231
230232 updateTask ( suite , runner )
231233
234+ let beforeAllCleanups : HookCleanupCallback [ ] = [ ]
235+
232236 if ( suite . mode === 'skip' ) {
233237 suite . result . state = 'skip'
234238 }
@@ -237,7 +241,7 @@ export async function runSuite(suite: Suite, runner: VitestRunner) {
237241 }
238242 else {
239243 try {
240- const beforeAllCleanups = await callSuiteHook ( suite , suite , 'beforeAll' , runner , [ suite ] )
244+ beforeAllCleanups = await callSuiteHook ( suite , suite , 'beforeAll' , runner , [ suite ] )
241245
242246 if ( runner . runSuite ) {
243247 await runner . runSuite ( suite )
@@ -262,17 +266,20 @@ export async function runSuite(suite: Suite, runner: VitestRunner) {
262266 }
263267 }
264268 }
265-
266- await callSuiteHook ( suite , suite , 'afterAll' , runner , [ suite ] )
267- await callCleanupHooks ( beforeAllCleanups )
268269 }
269270 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 )
274272 }
275273 }
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+
276283 suite . result . duration = now ( ) - start
277284
278285 if ( suite . mode === 'run' ) {
0 commit comments