From 83a1bb2ba3408b338a2659249c919d9e10c27d68 Mon Sep 17 00:00:00 2001 From: David Seveloff Date: Tue, 4 Aug 2026 10:13:20 +0300 Subject: [PATCH] fix: reject beta versions older than the latest beta tag validateNextBeta only required beta1 on a new version line, so a regression like 4.1.0-beta1 after 4.2.0-beta2 was accepted. Require semver.gt against the latest beta tag before the sequencing checks. Ref: ED-24452 Co-authored-by: Cursor --- .../current-version-validation.test.ts | 19 +++++++++++++++++-- .../current-version-validation.ts | 6 ++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/actions/release-tag-creation/current-version-validation.test.ts b/actions/release-tag-creation/current-version-validation.test.ts index c7bf98da9..2054c6532 100644 --- a/actions/release-tag-creation/current-version-validation.test.ts +++ b/actions/release-tag-creation/current-version-validation.test.ts @@ -59,9 +59,16 @@ describe('checkVersionIsNext', () => { ['4.2.0-beta1', '4.2.0-beta2'], '4.2.0-beta2', false, - 'Expected next beta to be 4.2.0-beta3', + 'must be greater than the latest beta tag 4.2.0-beta2', + ], + [ + 'beta', + ['4.2.0-beta1', '4.2.0-beta2'], + '4.2.0-beta1', + false, + 'must be greater than the latest beta tag 4.2.0-beta2', ], - // beta — new version line + // beta — new version line (must be greater than latest AND beta1) ['beta', ['4.2.0-beta1', '4.2.0-beta2'], '4.3.0-beta1', true, null], [ 'beta', @@ -70,6 +77,14 @@ describe('checkVersionIsNext', () => { false, 'must be beta1', ], + // beta — older version line must be rejected (regression) + [ + 'beta', + ['4.2.0-beta1', '4.2.0-beta2'], + '4.1.0-beta1', + false, + 'must be greater than the latest beta tag 4.2.0-beta2', + ], // beta — no existing tags ['beta', ['4.1.0', '4.2.0'], '4.2.0-beta1', true, null], ] as const)( diff --git a/actions/release-tag-creation/current-version-validation.ts b/actions/release-tag-creation/current-version-validation.ts index f63c73102..4367a69c2 100644 --- a/actions/release-tag-creation/current-version-validation.ts +++ b/actions/release-tag-creation/current-version-validation.ts @@ -48,6 +48,12 @@ function validateNextBeta( l: semver.SemVer, latest: string, ): void { + if (!semver.gt(n, l)) { + throw new Error( + `Version ${version} must be greater than the latest beta tag ${latest}.`, + ); + } + const latestBetaNum = Number(String(l.prerelease[0]).replace('beta', '')); const newBetaNum = Number(String(n.prerelease[0]).replace('beta', '')); const sameLine =