mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 12:31:32 +00:00
* fix(release): isolate extended-stable Docker aliases * fix(release): harden Docker channel promotion * docs(release): pin Docker policy into tagged tree * refactor(release): isolate Docker channel promotion * fix(release): queue Docker publications * fix(release): harden docker channel promotion * docs(release): tighten extended-stable guidance * fix(release): promote Docker aliases after verification * chore(release): format maintainer instructions * refactor(release): separate release version policy * docs(release): clarify extended-stable gateway scope * fix(release): harden Docker channel promotion
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
classifyReleaseTrain,
|
|
collectReleaseVersionFloorErrors,
|
|
compareReleaseVersions,
|
|
parseReleaseVersion,
|
|
} from "../scripts/lib/release-version.mjs";
|
|
|
|
describe("release version policy", () => {
|
|
it.each([
|
|
["2026.7.2-alpha.1", "alpha"],
|
|
["2026.7.2-beta.1", "beta"],
|
|
["2026.7.32", "stable"],
|
|
["2026.6.33", "extended-stable"],
|
|
["2026.6.34", "extended-stable"],
|
|
["2026.6.33-1", "unsupported-extended-stable-correction"],
|
|
] as const)("classifies %s as %s", (version, expected) => {
|
|
const parsed = parseReleaseVersion(version);
|
|
if (!parsed) {
|
|
throw new Error(`test version did not parse: ${version}`);
|
|
}
|
|
expect(classifyReleaseTrain(parsed)).toBe(expected);
|
|
});
|
|
|
|
it("blocks June 2026 stable and beta release trains below the published beta floor", () => {
|
|
expect(collectReleaseVersionFloorErrors("2026.6.4")).toEqual([
|
|
'June 2026 stable and beta release trains must use patch 5 or higher because 2026.6.5-beta.1 is already published; found "2026.6.4".',
|
|
]);
|
|
expect(collectReleaseVersionFloorErrors("2026.6.4-beta.1")).toEqual([
|
|
'June 2026 stable and beta release trains must use patch 5 or higher because 2026.6.5-beta.1 is already published; found "2026.6.4-beta.1".',
|
|
]);
|
|
});
|
|
|
|
it("keeps alpha compatibility and patch-floor release trains valid during the transition", () => {
|
|
expect(collectReleaseVersionFloorErrors("2026.6.4-alpha.1")).toEqual([]);
|
|
expect(collectReleaseVersionFloorErrors("2026.6.5-beta.2")).toEqual([]);
|
|
expect(collectReleaseVersionFloorErrors("2026.7.1")).toEqual([]);
|
|
});
|
|
|
|
it("orders prereleases, finals, and corrections", () => {
|
|
expect(compareReleaseVersions("2026.3.29-alpha.2", "2026.3.29-beta.1")).toBe(-1);
|
|
expect(compareReleaseVersions("2026.3.29-beta.1", "2026.3.29")).toBe(-1);
|
|
expect(compareReleaseVersions("2026.3.29-2", "2026.3.29")).toBe(1);
|
|
});
|
|
});
|