Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ TEST_F(MyTest, TestCaseName) {
- `test/planner/` - Query planner tests
- `test/optimizer/` - Query optimizer tests

## Node.js API

Tests live in `tools/nodejs_api/test/` and use the Node.js built-in test runner (`node --test`). Run with `npm test` from `tools/nodejs_api/`.

For guidelines on writing and reviewing these tests, see [Node.js API — Testing Guide](../tools/nodejs_api/docs/nodejs_testing.md).

## Running Tests

See `AGENTS.md` for build and test commands.
9 changes: 9 additions & 0 deletions tools/nodejs_api/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## Changelog

### Unreleased

- **Breaking:** Drop support for Node.js versions lower than 20; the package now requires **Node.js 20 or later** (`engines.node: ">=20.0.0"`).
- **Breaking:** Upgrade native build tooling to **`cmake-js` ^8.0.0** and **`node-addon-api` ^8.0.0**, aligning with the Node.js 20+ support window.
- Clarify Node.js version requirement in the README.
- Add **Node.js API testing guide** at `tools/nodejs_api/docs/nodejs_testing.md` for test authors and reviewers (assertions, isolation, data types, concurrency, errors, resource lifecycle, validation checklist). Remove `tools/nodejs_api/test/test_correctness_audit.md` in favor of this guide.

29 changes: 23 additions & 6 deletions tools/nodejs_api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,42 @@ else()
set(NPX_CMD npx)
endif()

# Use --log-level error so INFO lines are not captured in OUTPUT_VARIABLE
execute_process(
COMMAND ${NPX_CMD} cmake-js print-cmakejs-include
COMMAND ${NPX_CMD} cmake-js print-cmakejs-include --log-level error
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE CMAKE_JS_INC
)
execute_process(
COMMAND ${NPX_CMD} cmake-js print-cmakejs-lib
COMMAND ${NPX_CMD} cmake-js print-cmakejs-lib --log-level error
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE CMAKE_JS_LIB
)
execute_process(
COMMAND ${NPX_CMD} cmake-js print-cmakejs-src
COMMAND ${NPX_CMD} cmake-js print-cmakejs-src --log-level error
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE CMAKE_JS_SRC
)

string(STRIP ${CMAKE_JS_INC} CMAKE_JS_INC)
string(STRIP ${CMAKE_JS_LIB} CMAKE_JS_LIB)
string(STRIP ${CMAKE_JS_SRC} CMAKE_JS_SRC)
string(STRIP "${CMAKE_JS_INC}" CMAKE_JS_INC)
string(STRIP "${CMAKE_JS_LIB}" CMAKE_JS_LIB)
string(STRIP "${CMAKE_JS_SRC}" CMAKE_JS_SRC)
# Filter out cmake-js INFO lines that may be mixed into stdout
foreach(VAR CMAKE_JS_INC CMAKE_JS_LIB CMAKE_JS_SRC)
string(REPLACE "\n" ";" _LINES "${${VAR}}")
set(_FILTERED "")
foreach(_LINE ${_LINES})
string(STRIP "${_LINE}" _LINE)
if(_LINE AND NOT _LINE MATCHES "^INFO")
list(APPEND _FILTERED "${_LINE}")
endif()
endforeach()
list(JOIN _FILTERED " " _JOINED)
set(${VAR} "${_JOINED}")
endforeach()
string(STRIP "${CMAKE_JS_INC}" CMAKE_JS_INC)
string(STRIP "${CMAKE_JS_LIB}" CMAKE_JS_LIB)
string(STRIP "${CMAKE_JS_SRC}" CMAKE_JS_SRC)

# Print CMAKE_JS variables
message(STATUS "CMake.js configurations: LIB=${CMAKE_JS_LIB}, INC=${CMAKE_JS_INC}, SRC=${CMAKE_JS_SRC}")
Expand Down
Loading
Loading