test: ignore test-domain-no-error-handler-abort-on-uncaught tests#33937
Conversation
…ught tests These 10 tests rely on Node.js's --abort-on-uncaught-exception V8 flag (via common.childShouldThrowAndAbort), which Deno does not support.
fibibot
left a comment
There was a problem hiding this comment.
Substance is straightforward — adding 10 ignore: true entries for parallel/test-domain-no-error-handler-abort-on-uncaught-{0..9}.js with a uniform, accurate reason. Holding at COMMENT pending the 3 in-progress shards (Windows-aarch64 + node_compat (3/3) — slow but no failures so far).
Verified
The reason is correct and not papering over a fixable bug:
- Each test calls
common.childShouldThrowAndAbort(...)(intest/common/index.js's shared helper) - That helper spawns a child with
node --abort-on-uncaught-exception ...and asserts the child terminates withSIGABRTspecifically (not just a non-zero exit code) - The
--abort-on-uncaught-exceptionflag is a V8 surface — when set, V8's uncaught-exception handler callsabort()instead of running the JS-level handler chain - Deno doesn't pass
--abort-on-uncaught-exceptionthrough to V8 (and intentionally so — Deno's runtime owns the uncaught-exception handler for its own diagnostics + permission-error formatting) - Without the flag, the child exits normally on uncaught — so
child.signal === 'SIGABRT'fails. Not a Deno bug, an inherent platform divergence.
The ignore: true + per-test reason is the right disposition — keeps the test files visible in config.jsonc (so they don't silently disappear) but skips them with a self-documenting note. ✓
CI
110 success | 3 in_progress | 0 fail | 2 skipped
Will upgrade to APPROVE once the in-progress shards land. The node_compat (3/3) shard is the one that actually exercises this config change — once it reports green, this is a clean chore merge.
Use `test:` for PRs that only ignore/skip tests in config.jsonc, and `fix(ext/node):` for PRs that actually fix the implementation.
Summary
test-domain-no-error-handler-abort-on-uncaught-{0..9}.jstests intests/node_compat/config.jsonc.common.childShouldThrowAndAbort(), which spawns a child with Node.js's--abort-on-uncaught-exceptionV8 flag and asserts the child aborts (SIGABRT). Deno does not support this V8 flag, so the child exits normally and the assertion fails — this is an inherent incompatibility, not a fixable bug.Test plan
./x test-compat test-domain-no-error-handler-abort-on-uncaught— all 10 now reportignored