diff --git a/.changeset/quick-papayas-perform.md b/.changeset/quick-papayas-perform.md new file mode 100644 index 000000000..a845151cc --- /dev/null +++ b/.changeset/quick-papayas-perform.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/incubator/build/jest.config.js b/incubator/build/jest.config.js new file mode 100644 index 000000000..514ad1e00 --- /dev/null +++ b/incubator/build/jest.config.js @@ -0,0 +1,26 @@ +import * as fs from "node:fs"; + +const needsTransforming = [ + "find-up", + "locate-path", + "p-limit", + "p-locate", + "path-exists", + "yocto-queue", +].join("|"); + +function isPnpmMode() { + const url = new URL("../../.yarnrc.yml", import.meta.url); + const yarnConfig = fs.readFileSync(url, { encoding: "utf-8" }); + return yarnConfig.includes("nodeLinker: pnpm"); +} + +export default { + preset: "@rnx-kit/jest-preset/private", + resolver: "@rnx-kit/jest-preset/typescript-esm-resolver.cjs", + transformIgnorePatterns: [ + isPnpmMode() + ? `/node_modules/.store/(?!(${needsTransforming})-npm)` + : `/node_modules/(?!(${needsTransforming})/)`, + ], +}; diff --git a/incubator/build/package.json b/incubator/build/package.json index 679f23c55..74a228d4e 100644 --- a/incubator/build/package.json +++ b/incubator/build/package.json @@ -56,6 +56,8 @@ "@rnx-kit/eslint-config": "*", "@rnx-kit/jest-preset": "*", "@rnx-kit/scripts": "*", + "@types/jest": "^29.2.1", + "@types/node": "^18.0.0", "@types/qrcode": "^1.4.2", "@types/yargs": "^16.0.0", "eslint": "^8.0.0", @@ -66,12 +68,5 @@ "engines": { "node": ">=18.12" }, - "jest": { - "preset": "@rnx-kit/jest-preset/private", - "resolver": "@rnx-kit/jest-preset/typescript-esm-resolver.cjs", - "transformIgnorePatterns": [ - "/node_modules/(?!(find-up|locate-path|p-limit|p-locate|path-exists|yocto-queue)/)" - ] - }, "experimental": true } diff --git a/package.json b/package.json index 9c5c49b0c..191263821 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,8 @@ "@babel/core": "^7.0.0", "@babel/preset-env": "^7.0.0", "@changesets/cli": "^2.22.0", + "@types/jest": "^29.2.1", + "@types/node": "^18.0.0", "eslint": "^8.0.0", "jest-cli": "^29.2.1", "metro": "^0.76.5", diff --git a/packages/tools-workspaces/src/common.ts b/packages/tools-workspaces/src/common.ts index 5c8f0a3ca..0821f5b41 100644 --- a/packages/tools-workspaces/src/common.ts +++ b/packages/tools-workspaces/src/common.ts @@ -32,9 +32,10 @@ function dirnameAll(paths: string[]): string[] { } function makeFindSentinel(finder: (name: string[]) => R) { + const isTesting = Boolean(process.env.JEST_WORKER_ID); let result: R | undefined; return () => { - if (process.env.JEST_WORKER_ID || !result) { + if (isTesting || !result) { result = finder(WORKSPACE_ROOT_SENTINELS); } return result; diff --git a/yarn.lock b/yarn.lock index a7f5b997c..776bd7bd2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3463,6 +3463,8 @@ __metadata: "@rnx-kit/eslint-config": "*" "@rnx-kit/jest-preset": "*" "@rnx-kit/scripts": "*" + "@types/jest": ^29.2.1 + "@types/node": ^18.0.0 "@types/qrcode": ^1.4.2 "@types/yargs": ^16.0.0 env-paths: ^3.0.0 @@ -12597,6 +12599,8 @@ __metadata: "@babel/core": ^7.0.0 "@babel/preset-env": ^7.0.0 "@changesets/cli": ^2.22.0 + "@types/jest": ^29.2.1 + "@types/node": ^18.0.0 eslint: ^8.0.0 jest-cli: ^29.2.1 metro: ^0.76.5