From 948a54bdbf887748a7da3a3aad55bd136d8f9763 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 10 Jun 2025 20:30:26 +0800 Subject: [PATCH] Refine `prepare-test-for-legacy-nodejs` script (#17591) --- .github/workflows/prod-test.yml | 2 +- scripts/prepare-test-for-legacy-nodejs.js | 25 ++++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml index 34671d0ec..c63b17c53 100644 --- a/.github/workflows/prod-test.yml +++ b/.github/workflows/prod-test.yml @@ -105,7 +105,7 @@ jobs: - name: Downgrade Jest if: ${{ matrix.node == '14' || matrix.node == '16' }} - run: node ./scripts/prepare-test-for-legacy-nodejs.js + run: node ./scripts/prepare-test-for-legacy-nodejs.js --node-version ${{ matrix.node }} - name: Install Dependencies(yarn@3,mutable) if: ${{ matrix.node == '14' || matrix.node == '16' }} diff --git a/scripts/prepare-test-for-legacy-nodejs.js b/scripts/prepare-test-for-legacy-nodejs.js index 98294c205..b9c255787 100644 --- a/scripts/prepare-test-for-legacy-nodejs.js +++ b/scripts/prepare-test-for-legacy-nodejs.js @@ -1,15 +1,26 @@ import fs from "node:fs"; -const nodejsMajorVersion = Number(process.versions.node.split(".")[0]); const packageJsonFile = new URL("../package.json", import.meta.url); const packageJson = JSON.parse(fs.readFileSync(packageJsonFile)); -const jestVersion = - nodejsMajorVersion === 14 - ? // `jest@30.0.0-alpha.2` is the last version that supports Node.js v14 - "30.0.0-alpha.2" - : // `jest@30.0.0-alpha.7` is the last version that supports Node.js v16 - "30.0.0-alpha.7"; +const argv = process.argv.slice(2); +const nodeVersion = Number(argv[1]); + +if (argv[0] !== "--node-version" || !Number.isInteger(nodeVersion)) { + throw new Error("Expect `--node-version` argument."); +} + +let jestVersion; + +if (nodeVersion === 14) { + // `jest@30.0.0-alpha.2` is the last version that supports Node.js v14 + jestVersion = "30.0.0-alpha.2"; +} else if (nodeVersion === 16) { + // `jest@30.0.0-alpha.7` is the last version that supports Node.js v16 + jestVersion = "30.0.0-alpha.7"; +} else { + throw new Error("Unexpected `--node-version`."); +} // Script to get dependencies // console.log(