Harness primitive for testing expected crashes / uncaught exceptions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, node.js
- Área
- testing-qa
Línea de trabajo
Empieza leyendo test_exception/testFinalizerException.js y test_fatal para comparar sus expectativas sobre los subprocesos. Diseña el harness proporcionado por el implementador en torno a la forma propuesta de expectCrash, incluyendo la coincidencia de stderr y la terminación basada en una excepción o una señal. La tarea estará terminada cuando ambas pruebas afectadas puedan usar el helper y sigan verificando los resultados de crash esperados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
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 stderrtest_fatal(node-api) — callsnapi_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:
await expectCrash({
code: () => {
const addon = loadAddon('test_exception');
addon.createExternal();
// trigger GC...
},
stderr: /Error during Finalize/,
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
loadAddonand other CTS globals - Some crashes are signal-based (SIGABRT from
napi_fatal_error) vs exception-based — the helper should handle both
- Lenguaje dominante
- C
- Estrellas
- 18
- Forks
- 12
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de nodejs/node-api-cts
-
Drop Node.js v20 from CI matrix Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
nodejs/node-api-cts#37 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
nodejs/node-api-cts#85 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
nodejs/node-api-cts#84 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
nodejs/node-api-cts#61 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
nodejs/node-api-cts#35 · 1 reacción ·
Todos los issues de nodejs/node-api-cts
Issues similares
-
internal.h中,漏掉了1个定义。 Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Broadcast Documentation Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
kovidgoyal/kitty#10516 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
zephyrproject-rtos/zephyr#120011 ·