Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Port the make_callback test addon from #219 and enable node-api/test_async in node-tests

Aperta
#403 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
c, cmake, javascript, node.js, typescript

Direzione di ricerca

Inizia da packages/node-addon-examples/src/index.ts, dal modello CMake di tests/async, da scripts/copy-tests.mts e da packages/node-tests/common.ts; confronta i file make_callback di #219 con l’addon threadsafe-function di #398. Esegui i controlli del repository per node-addon-examples e node-tests. Il lavoro è completato quando l’addon viene compilato e registrato, node-api/test_async è abilitato ed entrambi i percorsi di test hanno esito positivo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.gyp from #219 (credit @paradowstack), add the checked-in CMakeLists.txt per the tests/async template and a package.json with a unique name (e.g. make-callback-test).
  • Register under suites.tests in packages/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:

  • common shims: the bundling pipeline aliases ../../common to packages/node-tests/common.ts, which currently only exports buildType. Upstream test.js uses common.mustCall. A faithful mustCall/mustCallAtLeast/mustNotCall needs 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. an afterEach-style flush exposed from common.ts).
  • <uv.h> in the C side: upstream test_async.c includes <uv.h> directly, so enabling it also needs a small uv shim along the lines of the pthread-based one written for tests/threadsafe-function/addon.c in #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.

Lingua principale
TypeScript
Stelle
188
Fork
10
Merge medio
2g 17h
PR unite (30g)
3

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di callstackincubator/react-native-node-api

Tutte le issue di callstackincubator/react-native-node-api

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.