Harness primitive for testing expected crashes / uncaught exceptions
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- javascript, node.js
- Domínio
- testing-qa
Direção de pesquisa
Comece lendo test_exception/testFinalizerException.js e test_fatal para comparar as expectativas de subprocesso de cada um. Projete o harness fornecido pelo implementador em torno do formato proposto de expectCrash, incluindo a correspondência de stderr e a terminação baseada em exceção ou sinal. Está concluído quando ambos os testes afetados puderem usar o helper e ainda verificarem os resultados de crash esperados.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- C
- Estrelas
- 18
- Forks
- 12
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de nodejs/node-api-cts
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
nodejs/node-api-cts#37 · 1 comentário ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
nodejs/node-api-cts#85 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
nodejs/node-api-cts#84 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
nodejs/node-api-cts#61 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
nodejs/node-api-cts#35 · 1 reação ·
Todas as issues de nodejs/node-api-cts
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
bradcypert/plum#53 ·
-
Component: GLib
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Status: Opened
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
nextbsd/nextbsd-userland#285 ·