726698e2b0
Review findings on #7586: - validate an explicit release version before comparing; the shared comparator never throws, so 999.bad previously reached every manifest - ci-release-notes imports the comparator by relative path: the release_github job runs without bun install - route Bun cache pruning through compareVersions and delete compareSemverLikeVersions - regression test for the release-version guard
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import { isValidExplicitVersion } from "./release";
|
|
|
|
describe("isValidExplicitVersion", () => {
|
|
test("rejects malformed versions", () => {
|
|
expect(isValidExplicitVersion("999.bad")).toBe(false);
|
|
expect(isValidExplicitVersion("17")).toBe(false);
|
|
expect(isValidExplicitVersion("17.2")).toBe(false);
|
|
expect(isValidExplicitVersion("17.2.8.9")).toBe(false);
|
|
expect(isValidExplicitVersion("v17.2.8.9")).toBe(false);
|
|
expect(isValidExplicitVersion("abc")).toBe(false);
|
|
expect(isValidExplicitVersion("")).toBe(false);
|
|
expect(isValidExplicitVersion("v")).toBe(false);
|
|
expect(isValidExplicitVersion("17.2.8-")).toBe(false);
|
|
});
|
|
|
|
test("accepts valid three-segment numeric versions", () => {
|
|
expect(isValidExplicitVersion("17.2.8")).toBe(true);
|
|
expect(isValidExplicitVersion("0.0.0")).toBe(true);
|
|
expect(isValidExplicitVersion("1.0.0")).toBe(true);
|
|
});
|
|
|
|
test("accepts leading v prefix", () => {
|
|
expect(isValidExplicitVersion("v17.2.8")).toBe(true);
|
|
expect(isValidExplicitVersion("V17.2.8")).toBe(false);
|
|
});
|
|
|
|
test("accepts prerelease suffixes", () => {
|
|
expect(isValidExplicitVersion("17.2.8-rc.1")).toBe(true);
|
|
expect(isValidExplicitVersion("v17.2.8-rc.1")).toBe(true);
|
|
expect(isValidExplicitVersion("1.0.0-beta")).toBe(true);
|
|
expect(isValidExplicitVersion("1.0.0-alpha.1.2")).toBe(true);
|
|
expect(isValidExplicitVersion("1.0.0-0.3.7")).toBe(true);
|
|
expect(isValidExplicitVersion("1.0.0-x.7.z.92")).toBe(true);
|
|
});
|
|
});
|