Skip to content

test_runner: fix after hook inside test suite is not executed if before() throws an error

Rodrigo Muino Tomonari requested to merge github/fork/pulkit-30/fix-50842 into main

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

Merge request reports

Loading