You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Harness primitive for testing expected crashes / uncaught exceptions #33
Several upstream Node.js tests verify behavior that causes the process to exit abnormally — uncaught exceptions from finalizers, fatal errors, etc. These tests use a subprocess pattern:
Spawn a child process that loads the addon and triggers the crash
Assert on the child's exit code and stderr output
The CTS currently has no equivalent harness primitive for this pattern.
Affected tests
test_exception/testFinalizerException.js (js-native-api) — finalizer throws during GC, expects process exit with "Error during Finalize" on stderr
test_fatal (node-api) — calls napi_fatal_error, expects process abort with specific message
Proposed solution
Add a harness helper that runs a code snippet in a subprocess and asserts on the outcome:
// Possible API shape:awaitexpectCrash({code: ()=>{constaddon=loadAddon('test_exception');addon.createExternal();// trigger GC...},stderr: /ErrorduringFinalize/,exitCode: (code)=>code!==0,});
Each implementor would provide the subprocess execution mechanism (e.g., Node.js would use child_process.spawnSync).
Considerations
The helper needs to be implementor-provided since subprocess APIs are runtime-specific
The test code to run in the subprocess may need access to loadAddon and other CTS globals
Some crashes are signal-based (SIGABRT from napi_fatal_error) vs exception-based — the helper should handle both
Activity