Skip to content

Commit 256e7a5

Browse files
authored
Add a node-tests package (#147)
* Add a node-tests package * Rolldown WIP * Build and bundle node test addons * Run node tests in test app * Update copy-tests.mts to use https git url * No need to babel transform from rolldown * Build node-tests in parallel * Add node-api tests to the node repo checkout * Use node --run * Generate entrypoint * Use fs to derive rolldown config * Revert parallel builds This seemed to be causing issues on Windows * Adopt test app to recursive suite of suites or tests * Ran prettier
1 parent 9b231c1 commit 256e7a5

18 files changed

+759
-7
lines changed

apps/test-app/App.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
} from "mocha-remote-react-native";
1010

1111
import { suites as nodeAddonExamplesSuites } from "@react-native-node-api/node-addon-examples";
12+
import { suites as nodeTestsSuites } from "@react-native-node-api/node-tests";
1213

1314
function describeIf(
1415
condition: boolean,
@@ -21,12 +22,14 @@ function describeIf(
2122
type Context = {
2223
allTests?: boolean;
2324
nodeAddonExamples?: boolean;
25+
nodeTests?: boolean;
2426
ferricExample?: boolean;
2527
};
2628

2729
function loadTests({
2830
allTests = false,
2931
nodeAddonExamples = allTests,
32+
nodeTests = allTests,
3033
ferricExample = allTests,
3134
}: Context) {
3235
describeIf(nodeAddonExamples, "Node Addon Examples", () => {
@@ -46,6 +49,22 @@ function loadTests({
4649
}
4750
});
4851

52+
describeIf(nodeTests, "Node Tests", () => {
53+
function registerTestSuite(suite: typeof nodeTestsSuites) {
54+
for (const [name, suiteOrTest] of Object.entries(suite)) {
55+
if (typeof suiteOrTest === "function") {
56+
it(name, suiteOrTest);
57+
} else {
58+
describe(name, () => {
59+
registerTestSuite(suiteOrTest);
60+
});
61+
}
62+
}
63+
}
64+
65+
registerTestSuite(nodeTestsSuites);
66+
});
67+
4968
describeIf(ferricExample, "ferric-example", () => {
5069
it("exports a callable sum function", () => {
5170
/* eslint-disable-next-line @typescript-eslint/no-require-imports -- TODO: Determine why a dynamic import doesn't work on Android */

apps/test-app/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
"test:android": "mocha-remote --exit-on-error -- concurrently --kill-others-on-fail --passthrough-arguments npm:metro 'npm:android -- {@}' --",
1111
"test:android:allTests": "MOCHA_REMOTE_CONTEXT=allTests npm run test:android -- ",
1212
"test:android:nodeAddonExamples": "MOCHA_REMOTE_CONTEXT=nodeAddonExamples npm run test:android -- ",
13+
"test:android:nodeTests": "MOCHA_REMOTE_CONTEXT=nodeTests npm run test:android -- ",
1314
"test:android:ferricExample": "MOCHA_REMOTE_CONTEXT=ferricExample npm run test:android -- ",
1415
"test:ios": "mocha-remote --exit-on-error -- concurrently --passthrough-arguments --kill-others-on-fail npm:metro 'npm:ios -- {@}' --",
1516
"test:ios:allTests": "MOCHA_REMOTE_CONTEXT=allTests npm run test:ios -- ",
1617
"test:ios:nodeAddonExamples": "MOCHA_REMOTE_CONTEXT=nodeAddonExamples npm run test:ios -- ",
18+
"test:ios:nodeTests": "MOCHA_REMOTE_CONTEXT=nodeTests npm run test:ios -- ",
1719
"test:ios:ferricExample": "MOCHA_REMOTE_CONTEXT=ferricExample npm run test:ios -- "
1820
},
1921
"dependencies": {
@@ -23,6 +25,8 @@
2325
"@react-native-community/cli": "^18.0.0",
2426
"@react-native-community/cli-platform-android": "^18.0.0",
2527
"@react-native-community/cli-platform-ios": "^18.0.0",
28+
"@react-native-node-api/node-addon-examples": "*",
29+
"@react-native-node-api/node-tests": "*",
2630
"@react-native/babel-preset": "0.79.0",
2731
"@react-native/metro-config": "0.79.0",
2832
"@react-native/typescript-config": "0.79.0",
@@ -36,7 +40,6 @@
3640
"mocha-remote-react-native": "^1.13.2",
3741
"react": "19.0.0",
3842
"react-native": "0.79.5",
39-
"react-native-node-addon-examples": "*",
4043
"react-native-node-api": "*",
4144
"react-native-test-app": "^4.3.3"
4245
}

eslint.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export default tseslint.config(
1313
"packages/host/hermes/**",
1414
"packages/node-addon-examples/examples/**",
1515
"packages/ferric-example/ferric_example.d.ts",
16+
"packages/node-tests/node/**",
17+
"packages/node-tests/tests/**",
1618
]),
1719
eslint.configs.recommended,
1820
tseslint.configs.recommended,
@@ -23,6 +25,7 @@ export default tseslint.config(
2325
"packages/node-addon-examples/*.js",
2426
"packages/host/babel-plugin.js",
2527
"packages/host/react-native.config.js",
28+
"packages/node-tests/tests.generated.js",
2629
],
2730
languageOptions: {
2831
parserOptions: {

0 commit comments

Comments
 (0)