From 5f3c1e1f6b5eaebf13cd935fab1359159638847d Mon Sep 17 00:00:00 2001 From: Lorenzo Sciandra Date: Tue, 17 Jan 2023 11:21:25 +0000 Subject: [PATCH] fix(scripts): add logic for version scripts to account for local E2E test versioning (#35847) Co-authored-by: Riccardo --- scripts/set-rn-version.js | 10 +++++++--- scripts/test-e2e-local.js | 18 +++++++++++------- scripts/version-utils.js | 16 +++++++++++++--- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/scripts/set-rn-version.js b/scripts/set-rn-version.js index 44f9ae4764a47a..c0b24f35a07ecb 100755 --- a/scripts/set-rn-version.js +++ b/scripts/set-rn-version.js @@ -38,7 +38,12 @@ let argv = yargs const buildType = argv.buildType; const version = argv.toVersion; -validateBuildType(buildType); + +try { + validateBuildType(buildType); +} catch (e) { + throw e; +} let major, minor, @@ -47,8 +52,7 @@ let major, try { ({major, minor, patch, prerelease} = parseVersion(version, buildType)); } catch (e) { - echo(e.message); - exit(1); + throw e; } const tmpVersioningFolder = fs.mkdtempSync( diff --git a/scripts/test-e2e-local.js b/scripts/test-e2e-local.js index 39ce8ca26f75ef..29a0e4a3607e79 100644 --- a/scripts/test-e2e-local.js +++ b/scripts/test-e2e-local.js @@ -21,7 +21,6 @@ const yargs = require('yargs'); const fs = require('fs'); const path = require('path'); const os = require('os'); -const {getBranchName} = require('./scm-utils'); const { launchAndroidEmulator, @@ -156,11 +155,9 @@ if (argv.target === 'RNTester') { // we need to add the unique timestamp to avoid npm/yarn to use some local caches const baseVersion = require('../package.json').version; - const branchName = getBranchName(); - const buildType = - branchName.endsWith('-stable') && baseVersion !== '1000.0.0' - ? 'release' - : 'dry-run'; + // in local testing, 1000.0.0 mean we are on main, every other case means we are + // working on a release version + const buildType = baseVersion !== '1000.0.0' ? 'release' : 'dry-run'; const dateIdentifier = new Date() .toISOString() @@ -171,10 +168,17 @@ if (argv.target === 'RNTester') { const releaseVersion = `${baseVersion}-${dateIdentifier}`; // this is needed to generate the Android artifacts correctly - exec( + const exitCode = exec( `node scripts/set-rn-version.js --to-version ${releaseVersion} --build-type ${buildType}`, ).code; + if (exitCode !== 0) { + console.error( + `Failed to set the RN version. Version ${releaseVersion} is not valid for ${buildType}`, + ); + process.exit(exitCode); + } + // Generate native files for Android generateAndroidArtifacts(releaseVersion, tmpPublishingFolder); diff --git a/scripts/version-utils.js b/scripts/version-utils.js index e73ea62ed44249..08f5ca01b8043a 100644 --- a/scripts/version-utils.js +++ b/scripts/version-utils.js @@ -18,6 +18,7 @@ const VERSION_REGEX = /^v?((\d+)\.(\d+)\.(\d+)(?:-(.+))?)$/; * Some examples of valid versions are: * - stable: 0.68.1 * - stable prerelease: 0.70.0-rc.0 + * - e2e-test: X.Y.Z-20221116-2018 * - nightly: 0.0.0-20221116-2018-0bc4547fc * - dryrun: 1000.0.0 * @@ -38,7 +39,11 @@ const VERSION_REGEX = /^v?((\d+)\.(\d+)\.(\d+)(?:-(.+))?)$/; * */ function parseVersion(versionStr, buildType) { - validateBuildType(buildType); + try { + validateBuildType(buildType); + } catch (e) { + throw e; + } const match = extractMatchIfValid(versionStr); const [, version, major, minor, patch, prerelease] = match; @@ -51,7 +56,11 @@ function parseVersion(versionStr, buildType) { prerelease, }; - validateVersion(versionObject, buildType); + try { + validateVersion(versionObject, buildType); + } catch (e) { + throw e; + } return versionObject; } @@ -129,7 +138,8 @@ function isStablePrerelease(version) { version.patch === '0' && version.prerelease != null && (version.prerelease.startsWith('rc.') || - version.prerelease.startsWith('rc-')) + version.prerelease.startsWith('rc-') || + version.prerelease.match(/^(\d{8})-(\d{4})$/)) ); }