test_runner: fix after hook inside test suite is not executed if before() throws an error
fix #50842 (closed)
fix code:
import { it, before, describe, after } from 'node:test';
describe('failing test suite', () => {
before(async () => {
console.log('before called');
throw new Error('error');
});
after(async () => {
console.log('after called');
});
it('should be ok', async () => {});
});
pulkitgupta@Pulkits-MacBook-Air node % ./node index.mjs
before called
+ after called
▶ failing test suite
✖ should be ok
'test did not finish before its parent and was cancelled'
▶ failing test suite (3.217584ms)
Error: error
at SuiteContext.<anonymous> (file:///Users/pulkitgupta/Desktop/node/index.mjs:6:11)
at TestHook.runInAsyncScope (node:async_hooks:206:9)
at TestHook.run (node:internal/test_runner/test:631:25)
at TestHook.run (node:internal/test_runner/test:856:18)
at TestHook.run (node:internal/util:522:12)
at node:internal/test_runner/test:565:20
at async Suite.runHook (node:internal/test_runner/test:563:7)
at async Suite.run (node:internal/test_runner/test:945:7)
at async startSubtest (node:internal/test_runner/harness:216:3)
ℹ tests 1
ℹ suites 1
ℹ pass 0
ℹ fail 0
ℹ cancelled 1
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 15.439667
✖ failing tests:
test at file:/Users/pulkitgupta/Desktop/node/index.mjs:13:3
✖ should be ok
'test did not finish before its parent and was cancelled'
test at file:/Users/pulkitgupta/Desktop/node/index.mjs:3:1
✖ failing test suite (3.217584ms)
Error: error
at SuiteContext.<anonymous> (file:///Users/pulkitgupta/Desktop/node/index.mjs:6:11)
at TestHook.runInAsyncScope (node:async_hooks:206:9)
at TestHook.run (node:internal/test_runner/test:631:25)
at TestHook.run (node:internal/test_runner/test:856:18)
at TestHook.run (node:internal/util:522:12)
at node:internal/test_runner/test:565:20
at async Suite.runHook (node:internal/test_runner/test:563:7)
at async Suite.run (node:internal/test_runner/test:945:7)
at async startSubtest (node:internal/test_runner/harness:216:3)
pulkitgupta@Pulkits-MacBook-Air node %
ref: https://github.com/nodejs/node/issues/50842#issuecomment-1840775178