diff --git a/actions/release-tag-creation/current-version-validation.test.ts b/actions/release-tag-creation/current-version-validation.test.ts index c7bf98da9..4b03436b3 100644 --- a/actions/release-tag-creation/current-version-validation.test.ts +++ b/actions/release-tag-creation/current-version-validation.test.ts @@ -61,14 +61,43 @@ describe('checkVersionIsNext', () => { false, 'Expected next beta to be 4.2.0-beta3', ], - // beta — new version line + // beta — next minor / next major ['beta', ['4.2.0-beta1', '4.2.0-beta2'], '4.3.0-beta1', true, null], + ['beta', ['4.2.0-beta1', '4.2.0-beta2'], '5.0.0-beta1', true, null], [ 'beta', ['4.2.0-beta1', '4.2.0-beta2'], '4.3.0-beta2', false, - 'must be beta1', + 'Expected next beta line to be 4.3.0-beta1 or 5.0.0-beta1', + ], + [ + 'beta', + ['4.2.0-beta1', '4.2.0-beta2'], + '4.4.0-beta1', + false, + 'Expected next beta line to be 4.3.0-beta1 or 5.0.0-beta1', + ], + [ + 'beta', + ['4.2.0-beta1', '4.2.0-beta2'], + '4.1.0-beta1', + false, + 'Expected next beta line to be 4.3.0-beta1 or 5.0.0-beta1', + ], + [ + 'beta', + ['4.2.0-beta1', '4.2.0-beta2'], + '6.0.0-beta1', + false, + 'Expected next beta line to be 4.3.0-beta1 or 5.0.0-beta1', + ], + [ + 'beta', + ['4.2.0-beta1', '4.2.0-beta2'], + '5.1.0-beta1', + false, + 'Expected next beta line to be 4.3.0-beta1 or 5.0.0-beta1', ], // beta — no existing tags ['beta', ['4.1.0', '4.2.0'], '4.2.0-beta1', true, null], diff --git a/actions/release-tag-creation/current-version-validation.ts b/actions/release-tag-creation/current-version-validation.ts index f63c73102..dff2f9b4b 100644 --- a/actions/release-tag-creation/current-version-validation.ts +++ b/actions/release-tag-creation/current-version-validation.ts @@ -52,14 +52,20 @@ function validateNextBeta( const newBetaNum = Number(String(n.prerelease[0]).replace('beta', '')); const sameLine = n.major === l.major && n.minor === l.minor && n.patch === l.patch; - if (sameLine && newBetaNum !== latestBetaNum + 1) { - throw new Error( - `Expected next beta to be ${latest.replace(`beta${String(latestBetaNum)}`, `beta${String(latestBetaNum + 1)}`)}, got ${version}.`, - ); + if (sameLine) { + if (newBetaNum !== latestBetaNum + 1) { + throw new Error( + `Expected next beta to be ${latest.replace(`beta${String(latestBetaNum)}`, `beta${String(latestBetaNum + 1)}`)}, got ${version}.`, + ); + } + return; } - if (!sameLine && newBetaNum !== 1) { + + const nextMinor = `${String(l.major)}.${String(l.minor + 1)}.0-beta1`; + const nextMajor = `${String(l.major + 1)}.0.0-beta1`; + if (version !== nextMinor && version !== nextMajor) { throw new Error( - `First beta of a new version line must be beta1, got ${version}.`, + `Expected next beta line to be ${nextMinor} or ${nextMajor}, got ${version} (latest: ${latest}).`, ); } }