Port the make_callback test addon from #219 and enable node-api/test_async in node-tests
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 55/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- c, cmake, javascript, node.js, typescript
- Domaine
- build-system, testing-qa
Piste de recherche
Commencez par packages/node-addon-examples/src/index.ts, le modèle CMake de tests/async, scripts/copy-tests.mts et packages/node-tests/common.ts ; comparez les fichiers make_callback de #219 avec l’addon threadsafe-function de #398. Exécutez les vérifications du dépôt pour node-addon-examples et node-tests. C’est terminé lorsque l’addon est compilé et enregistré, que node-api/test_async est activé et que les deux chemins de test passent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Two test-coverage follow-ups deferred from #398. Both validate functionality that Hermes' first-party Node-API implementation provides on its own (independent of the hermes_napi_host integration), so they were split out as test-infrastructure work.
1. Port the make_callback test addon from #219
napi_async_init / napi_async_destroy / napi_make_callback are provided natively by the vendored Hermes since the static_h adoption (the injector binds the full symbol surface), which obsoletes #219's host-side C++ implementation — but its test addon (tests/make_callback/: addon.c adapted from Node's own test plus a promise-less driver asserting receiver/argument/return-value plumbing) ports directly to the packages/node-addon-examples/tests/<name>/ pattern established there and in #398:
- Copy
addon.c,addon.js,binding.gypfrom #219 (credit @paradowstack), add the checked-inCMakeLists.txtper thetests/asynctemplate and apackage.jsonwith a unique name (e.g.make-callback-test). - Register under
suites.testsinpackages/node-addon-examples/src/index.ts.
Expected to pass as-is against next — a failure would be a real conformance finding against Hermes' implementation.
2. Enable node-api/test_async in packages/node-tests
The entry exists but is commented out in scripts/copy-tests.mts's ALLOW_LIST. Two independent blockers:
commonshims: the bundling pipeline aliases../../commontopackages/node-tests/common.ts, which currently only exportsbuildType. Upstreamtest.jsusescommon.mustCall. A faithfulmustCall/mustCallAtLeast/mustNotCallneeds a home for its verification step: upstream checks call counts at process exit, which has no analogue in the long-lived mocha-remote app — the shim needs a per-test verification hook wired into the generated suite (e.g. anafterEach-style flush exposed fromcommon.ts).<uv.h>in the C side: upstreamtest_async.cincludes<uv.h>directly, so enabling it also needs a small uv shim along the lines of the pthread-based one written fortests/threadsafe-function/addon.cin #398 (or an upstream contribution making the test buildable without libuv).
Note on value: the behavioral coverage largely overlaps the hand-written tests/async addon (create/queue/cancel/delete, cancel-while-queued via pool saturation — upstream's MAX_CANCEL_THREADS 6 trick is the same one tests/async already uses — plus the #398 additions for thread identity and cancel-while-running). The win from enabling the upstream suite is conformance tracking against Node itself rather than new coverage, which is also why it wasn't a blocker for #398.
- Langage dominant
- TypeScript
- Étoiles
- 191
- Forks
- 10
- Merge moyen
- 2 j 17 h
- PR mergées (30 j)
- 3
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de callstackincubator/react-native-node-api
-
Android 🤖
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
-
Sanity check of Hermes source directory via environment variable, when building Android projectsOuverteAndroid 🤖 good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
callstackincubator/react-native-node-api#163 · 1 commentaire ·
-
enhancement good first issue gyp-to-cmake
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
callstackincubator/react-native-node-api#161 · 3 commentaires · 1 réaction ·
-
enhancement Host 🏡
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
-
Automatable good first issue
Difficulté 3/5 1-2 jours Accessibilité débutants 15/100
callstackincubator/react-native-node-api#424 · 1 commentaire ·
Toutes les issues de callstackincubator/react-native-node-api
Issues similaires
-
Add: Digi World (Romania) SDOuvertecheck:passed streams:add
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Fission-AI/OpenSpec#1986 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
nestjs/docs.nestjs.com#3554 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
publicodes/publicodes#868 ·
-
namespace operations
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
EclipseFdn/open-vsx.org#13488 ·
Les mainteneurs répondent en général sous 2 jours