@@ -542,6 +542,23 @@ else
542542build-sqlite-tests :
543543endif
544544
545+ FFI_BINDING_GYPS := $(wildcard test/ffi/* /binding.gyp)
546+
547+ FFI_BINDING_SOURCES := \
548+ $(wildcard test/ffi/* /* .c)
549+
550+ # Implicitly depends on $(NODE_EXE), see the build-ffi-tests rule for rationale.
551+ test/ffi/.buildstamp : $(ADDONS_PREREQS ) \
552+ $(FFI_BINDING_GYPS ) $(FFI_BINDING_SOURCES )
553+ @$(call run_build_addons,"$$PWD/test/ffi",$@ )
554+
555+ .PHONY : build-ffi-tests
556+ # .buildstamp needs $(NODE_EXE) but cannot depend on it
557+ # directly because it calls make recursively. The parent make cannot know
558+ # if the subprocess touched anything so it pessimistically assumes that
559+ # .buildstamp is out of date and need a rebuild.
560+ build-ffi-tests : | $(NODE_EXE ) test/ffi/.buildstamp # # Build FFI tests.
561+
545562.PHONY : clear-stalled
546563clear-stalled : # # Clear any stalled processes.
547564 $(info Clean up any leftover processes but don't error if found.)
@@ -552,7 +569,7 @@ clear-stalled: ## Clear any stalled processes.
552569 fi
553570
554571.PHONY : test-build
555- test-build : | all build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests # # Build all tests.
572+ test-build : | all build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests build-ffi-tests # # Build all tests.
556573
557574.PHONY : test-build-js-native-api
558575test-build-js-native-api : all build-js-native-api-tests # # Build JS Native-API tests.
@@ -591,7 +608,7 @@ endif
591608
592609# Related CI job: node-test-commit-arm-fanned
593610test-ci-native : LOGLEVEL := info # # Build and test addons without building anything else.
594- test-ci-native : | benchmark/napi/.buildstamp test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp test/sqlite/.buildstamp
611+ test-ci-native : | benchmark/napi/.buildstamp test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp test/sqlite/.buildstamp test/ffi/.buildstamp
595612 $(PYTHON ) tools/test.py $(PARALLEL_ARGS ) -p tap --logfile test.tap \
596613 --mode=$(BUILDTYPE_LOWER ) --flaky-tests=$(FLAKY_TESTS ) \
597614 $(TEST_CI_ARGS ) $(CI_NATIVE_SUITES )
@@ -614,7 +631,7 @@ test-ci-js: | clear-stalled ## Build and test JavaScript with building anything
614631.PHONY : test-ci
615632# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
616633test-ci : LOGLEVEL := info # # Build and test everything (CI).
617- test-ci : | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests doc-only
634+ test-ci : | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests build-sqlite-tests build-ffi-tests doc-only
618635 out/Release/cctest --gtest_output=xml:out/junit/cctest.xml
619636 $(PYTHON ) tools/test.py $(PARALLEL_ARGS ) -p tap --logfile test.tap \
620637 --mode=$(BUILDTYPE_LOWER ) --flaky-tests=$(FLAKY_TESTS ) \
0 commit comments