Skip to content

feat: port 6_object_wrap test to CTS#32

Draft
kraenhansen wants to merge 1 commit intonodejs:mainfrom
kraenhansen:feat/port-6-object-wrap
Draft

feat: port 6_object_wrap test to CTS#32
kraenhansen wants to merge 1 commit intonodejs:mainfrom
kraenhansen:feat/port-6-object-wrap

Conversation

@kraenhansen
Copy link
Copy Markdown
Contributor

@kraenhansen kraenhansen commented Mar 8, 2026

Summary

Ports 6_object_wrap from the Node.js test suite into the CTS. This is the first test to exercise the experimental addon infrastructure (add_node_api_cts_experimental_addon()), serving as end-to-end validation of #31.

Three build targets:

  • myobject (stable) — object wrap with getters/setters, plusOne, multiply
  • myobject_basic_finalizer (experimental, NAPI_EXPERIMENTAL) — basic finalizer verification, guarded by experimentalFeatures.postFinalizer
  • nested_wrap (NAPI_VERSION=10) — nested napi_ref finalization

Three JS test files:

  • test.js — property descriptors, constructor/plain-function invocation, method chaining
  • test-basic-finalizer.js — experimental finalizer with gcUntil, behind feature guard
  • nested_wrap.js — nested wrap finalization with gcUntil

All C++ source files are copied verbatim from upstream.

Test plan

  • npm run addons:configure && npm run addons:build — all three targets compile
  • npm run node:test — all 58 tests pass (3 new)
  • C++ files diff clean against upstream

🤖 Generated with Claude Code

@kraenhansen kraenhansen moved this from Need Triage to Has PR in Node-API Team Project Mar 8, 2026
@kraenhansen kraenhansen marked this pull request as draft March 8, 2026 13:01
@kraenhansen

This comment was marked as outdated.

Port all three build targets and test files from upstream:
- myobject (stable) — object wrap with getters/setters/methods
- myobject_basic_finalizer (experimental) — basic finalizer verification
- nested_wrap (NAPI_VERSION=10) — nested ref finalization

The experimental target (myobject_basic_finalizer) exercises the
add_node_api_cts_experimental_addon() CMake function for the first time,
serving as end-to-end validation of the experimental infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@kraenhansen kraenhansen force-pushed the feat/port-6-object-wrap branch from d57e9e9 to d833299 Compare March 28, 2026 19:33
@kraenhansen
Copy link
Copy Markdown
Contributor Author

CI fails on Node.js v20 — same root cause as #28. The nested_wrap addon is built with NAPI_VERSION=10 which isn't fully supported on v20 (see nodejs/node#55676).

Blocked on #37 (dropping Node v20 from CI).

@kraenhansen kraenhansen moved this from Has PR to In Progress in Node-API Team Project Mar 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant