Split test_general into stable and experimental targets
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Refactorización
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- c, javascript, node.js
- Área
- api, build-system, testing-qa
Línea de trabajo
Comienza con el directorio upstream test/js-native-api/test_general y su binding.gyp, y compara después cómo CTS hace actualmente el port del único target experimental. Identifica las agrupaciones de funcionalidades estables y experimentales descritas en el issue. Se considera terminado cuando los tests de la API estable pueden cargarse sin todos los símbolos experimentales, mientras que los tests experimentales siguen estando protegidos por separado y se pueden compilar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The upstream test_general test in the Node.js repository compiles a single target with NAPI_EXPERIMENTAL, which links against all experimental Node-API symbols (node_api_set_prototype, node_api_post_finalizer). This means the addon cannot be loaded on runtimes that don't export every experimental symbol.
In the CTS, this forces all test_general JS test files to guard loadAddon behind a check for every experimental feature the addon links against. The result is that even stable API tests (like napi_strict_equals, napi_typeof, napi_instanceof, etc.) are silently skipped on runtimes that don't support all experimental features.
Proposed solution
Split the upstream test_general into separate targets:
- Stable target — compiles without
NAPI_EXPERIMENTAL, includes all stable API functions - Experimental target(s) — one per experimental feature, compiled with the appropriate
NAPI_EXPERIMENTALdefine
This would allow the CTS to test stable APIs independently of experimental feature support.
Current workaround
The CTS ports test_general as a single experimental addon (matching upstream), with all JS tests guarded behind experimentalFeatures.setPrototype && experimentalFeatures.postFinalizer.
References
- Upstream source: https://github.com/nodejs/node/tree/main/test/js-native-api/test_general
- Upstream
binding.gypdefinesNAPI_EXPERIMENTALon the single target
- 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 ·