diff --git a/scripts/set-rn-version.js b/scripts/set-rn-version.js index 4e04fe2fe64975..8910f606b0a336 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 6ade2825b6ea58..e96278b40c9f82 100644 --- a/scripts/test-e2e-local.js +++ b/scripts/test-e2e-local.js @@ -19,7 +19,6 @@ const {exec, exit, pushd, popd, pwd, cd, cp} = require('shelljs'); const yargs = require('yargs'); const fs = require('fs'); -const {getBranchName} = require('./scm-utils'); const { launchAndroidEmulator, @@ -147,11 +146,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() @@ -162,10 +159,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); diff --git a/scripts/version-utils.js b/scripts/version-utils.js index f482e1cc70a8a6..661eccb97c733f 100644 --- a/scripts/version-utils.js +++ b/scripts/version-utils.js @@ -18,7 +18,8 @@ const VERSION_REGEX = /^v?((\d+)\.(\d+)\.(\d+)(?:-(.+))?)$/; * Some examples of valid versions are: * - stable: 0.68.1 * - stable prerelease: 0.70.0-rc.0 - * - nightly: 0.0.0-20221116-2018-0bc4547fc | 0.0.0 + * - e2e-test: X.Y.Z-20221116-2018 + * - nightly: 0.0.0-20221116-2018-0bc4547fc * - dryrun: 1000.0.0 * * Parameters: @@ -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; } @@ -125,7 +134,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})$/)) ); }