Two test gaps: unverified prebuild `Info.plist` and a missing `.node` fixture in the Babel plugin tests

Abierto
#424 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
15/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
javascript, node.js, typescript

Línea de trabajo

Comienza con las pruebas marcadas con TODO y packages/host/src/node/prebuilds/apple.ts, incluido writeFrameworkInfoPlist, y luego ejecuta las pruebas unitarias relevantes. Se considera terminado cuando la prueba de prebuild verifica los valores de Info.plist generados y el fixture del plugin de Babel incluye tanto my-addon.js como my-addon.node, preservando la resolución prevista. PR #426 ya cubre este trabajo.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Automatable good first issue

Two TODOs marking tests that assert less than they appear to.

verify-prebuilds skips the Info.plist it just found


The verifier walks each framework in the XCFramework and `continue`s past `Info.plist` without reading it. That file is written by `writeFrameworkInfoPlist` in `packages/host/src/node/prebuilds/apple.ts` from the library name and bundle identifier, and a wrong `CFBundleExecutable` or `CFBundleIdentifier` is exactly the kind of failure that passes every build step and then fails at load time on device. Parsing it and asserting the executable name matches the library, and the identifier matches what was requested, is a handful of lines given `@expo/plist` is already a dependency.

## "does not touch required JS files" doesn't prove what it claims

The test fixture has my-addon.js and asserts the plugin does not emit requireNodeAddon. But with no my-addon.node in the fixture there is nothing for the plugin to have found in the first place — the assertion passes for the wrong reason, and would keep passing even if the plugin's precedence between a .js and a sibling addon were broken. Adding a ./my-addon.node alongside it, as the TODO says, is what makes the test meaningful: with both present, require('./my-addon') must still resolve to the JS file.


Current status (as of 2026-09-14)

Both gaps above are fixed by #426, the only open PR against this issue. It's mergeable (clean), has two maintainer approvals, and CI is fully green (Lint + Unit tests on ubuntu/macos/windows; native app/device jobs skipped, which is expected for a fork PR without runner secrets/labels). Nothing further is needed here besides merging it — no competing implementation work is warranted.

Earlier independent attempts (#448, #449, #450, #455) were closed in favor of #426 once it became clear it already covered the same fixes (the shared isNodeApiModule .js/.node precedence bug, plus zod-validated Info.plist verification).

Lenguaje dominante
TypeScript
Estrellas
188
Forks
10
Merge medio
2 d 17 h
PR fusionados (30 d)
3

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de callstackincubator/react-native-node-api

Todos los issues de callstackincubator/react-native-node-api

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.