fix(release): enforce lane floor for calver appcast entries

This commit is contained in:
Ayaan Zaidi
2026-02-28 10:18:10 +05:30
committed by Ayaan Zaidi
parent 10f1be1072
commit f29c642c13
2 changed files with 48 additions and 7 deletions

View File

@@ -0,0 +1,28 @@
import { describe, expect, it } from "vitest";
import { collectAppcastSparkleVersionErrors } from "../scripts/release-check.ts";
function makeItem(shortVersion: string, sparkleVersion: string): string {
return `<item><title>${shortVersion}</title><sparkle:shortVersionString>${shortVersion}</sparkle:shortVersionString><sparkle:version>${sparkleVersion}</sparkle:version></item>`;
}
describe("collectAppcastSparkleVersionErrors", () => {
it("accepts legacy 9-digit calver builds before lane-floor cutover", () => {
const xml = `<rss><channel>${makeItem("2026.2.26", "202602260")}</channel></rss>`;
expect(collectAppcastSparkleVersionErrors(xml)).toEqual([]);
});
it("requires lane-floor builds on and after lane-floor cutover", () => {
const xml = `<rss><channel>${makeItem("2026.2.27", "202602270")}</channel></rss>`;
expect(collectAppcastSparkleVersionErrors(xml)).toEqual([
"appcast item '2026.2.27' has sparkle:version 202602270 below lane floor 2026022790.",
]);
});
it("accepts canonical stable lane builds on and after lane-floor cutover", () => {
const xml = `<rss><channel>${makeItem("2026.2.27", "2026022790")}</channel></rss>`;
expect(collectAppcastSparkleVersionErrors(xml)).toEqual([]);
});
});