From b1a8b4f866e2433d624dae3b13b8f8b1783cbebe Mon Sep 17 00:00:00 2001 From: rcourtman <8825017+rcourtman@users.noreply.github.com> Date: Sun, 11 Oct 2026 21:08:44 +0100 Subject: [PATCH] Let the release metadata tests accept beta versions The release train now cuts a beta every two days before the release candidate. Its first beta, v6.6.0-beta.1, failed its preparation checks twice: the governance test that maps VERSION to its release packet only matched -rc.N, and two tests required the release index to say "current v6 release candidate packet" while the metadata tool writes "current v6 beta packet" for a beta. Accept -beta.N where the packet paths are derived and derive the expected index wording from the version. Release candidates and stable releases are checked exactly as before. Contract-Neutral: Release metadata tests only; no runtime, API, install or customer contract change. --- scripts/installtests/build_release_assets_test.go | 9 +++++++-- scripts/release_control/release_promotion_policy_test.py | 7 ++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/scripts/installtests/build_release_assets_test.go b/scripts/installtests/build_release_assets_test.go index 6a3c248530..bb891d848c 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -1352,15 +1352,20 @@ func TestCurrentPrereleasePacketTracksInstallMetadata(t *testing.T) { "Separate standalone Proxmox sites that reuse a short node name no longer lose correct agent links when their provider-observed addresses uniquely disambiguate them", ) } + // The release train's betas point at their packet as "beta", candidates as "release candidate". + packetLabel := "release candidate" + if strings.Contains(version, "-beta.") { + packetLabel = "beta" + } assertFileContainsAll(t, repoFile("docs", "RELEASE_NOTES.md"), "docs/releases/RELEASE_NOTES_v"+version+".md", "docs/releases/V6_CHANGELOG_v"+version+".md", - "current v6 release candidate packet", + "current v6 "+packetLabel+" packet", ) assertFileContainsAll(t, repoFile("docs", "UPGRADE_v6.md"), "docs/releases/RELEASE_NOTES_v"+version+".md", "docs/releases/V6_CHANGELOG_v"+version+".md", - "current v6 release candidate packet", + "current v6 "+packetLabel+" packet", ) assertFileContainsAll(t, repoFile("deploy", "helm", "pulse", "Chart.yaml"), "version: "+version, diff --git a/scripts/release_control/release_promotion_policy_test.py b/scripts/release_control/release_promotion_policy_test.py index 2de1e95a94..ba474e14f7 100644 --- a/scripts/release_control/release_promotion_policy_test.py +++ b/scripts/release_control/release_promotion_policy_test.py @@ -267,8 +267,8 @@ def rc_packet_paths_for_version(version: str) -> tuple[str, str, str] | None: def support_prerelease_packet_paths_for_version(version: str) -> tuple[str, str] | None: - """Return release-notes and changelog paths for post-GA support RC versions.""" - if not re.match(r"^6\.\d+\.\d+-rc\.\d+$", version): + """Return release-notes and changelog paths for post-GA support beta and RC versions.""" + if not re.match(r"^6\.\d+\.\d+-(?:rc|beta)\.\d+$", version): return None if version.startswith("6.0.0-rc."): return None @@ -1661,7 +1661,8 @@ class ReleasePromotionPolicyTest(unittest.TestCase): release_notes = read(release_notes_path) changelog = read(changelog_path) - self.assertIn("current v6 release candidate packet", release_index) + packet_label = "beta" if "-beta." in current_version else "release candidate" + self.assertIn(f"current v6 {packet_label} packet", release_index) self.assertIn(release_notes_path, release_index) self.assertIn(changelog_path, release_index) self.assertTrue(release_notes_have_exact_title(release_notes, current_version))