Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Offen
#403 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
c, cmake, javascript, node.js, typescript

Rechercherichtung

Beginne mit packages/node-addon-examples/src/index.ts, der CMake-Vorlage für tests/async, scripts/copy-tests.mts und packages/node-tests/common.ts; vergleiche die Dateien make_callback aus #219 mit dem threadsafe-function-Addon aus #398. Führe die Checks des Repositorys für node-addon-examples und node-tests aus. Erledigt bedeutet, dass das Addon gebaut und registriert wird, node-api/test_async aktiviert ist und beide Testpfade erfolgreich sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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.

Vorherrschende Sprache
TypeScript
Sterne
191
Forks
10
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
3

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus callstackincubator/react-native-node-api

Alle Issues in callstackincubator/react-native-node-api

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.