From de62ccbf81877f325326f60a6c5bcb303953e3b0 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 3 Mar 2026 05:48:00 +0000 Subject: [PATCH] fix(test): stabilize appcast version assertion --- test/appcast.test.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/test/appcast.test.ts b/test/appcast.test.ts index 941e090df96..1ccf5068cb6 100644 --- a/test/appcast.test.ts +++ b/test/appcast.test.ts @@ -5,16 +5,21 @@ import { canonicalSparkleBuildFromVersion } from "../scripts/sparkle-build.ts"; const APPCAST_URL = new URL("../appcast.xml", import.meta.url); describe("appcast.xml", () => { - it("uses the expected Sparkle version for 2026.3.1", () => { + it("uses canonical sparkle build for the latest stable appcast entry", () => { const appcast = readFileSync(APPCAST_URL, "utf8"); - const shortVersion = "2026.3.1"; - const items = Array.from(appcast.matchAll(/[\s\S]*?<\/item>/g)).map((match) => match[0]); - const matchingItem = items.find((item) => - item.includes(`${shortVersion}`), - ); + const items = [...appcast.matchAll(/([\s\S]*?)<\/item>/g)].map((match) => match[1] ?? ""); + expect(items.length).toBeGreaterThan(0); - expect(matchingItem).toBeDefined(); - const sparkleMatch = matchingItem?.match(/([^<]+)<\/sparkle:version>/); - expect(sparkleMatch?.[1]).toBe(String(canonicalSparkleBuildFromVersion(shortVersion))); + const stableItem = items.find((item) => /\d+90<\/sparkle:version>/.test(item)); + expect(stableItem).toBeDefined(); + + const shortVersion = stableItem?.match( + /([^<]+)<\/sparkle:shortVersionString>/, + )?.[1]; + const sparkleVersion = stableItem?.match(/([^<]+)<\/sparkle:version>/)?.[1]; + + expect(shortVersion).toBeDefined(); + expect(sparkleVersion).toBeDefined(); + expect(sparkleVersion).toBe(String(canonicalSparkleBuildFromVersion(shortVersion!))); }); });