mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-14 00:16:37 +00:00
fix: support legacy and beta prerelease version formats
This commit is contained in:
@@ -1,5 +1,25 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { resolveNpmChannelTag } from "./update-check.js";
|
||||
import { compareSemverStrings, resolveNpmChannelTag } from "./update-check.js";
|
||||
|
||||
describe("compareSemverStrings", () => {
|
||||
it("handles stable and prerelease precedence for both legacy and beta formats", () => {
|
||||
expect(compareSemverStrings("1.0.0", "1.0.0")).toBe(0);
|
||||
expect(compareSemverStrings("v1.0.0", "1.0.0")).toBe(0);
|
||||
|
||||
expect(compareSemverStrings("1.0.0", "1.0.0-beta.1")).toBe(1);
|
||||
expect(compareSemverStrings("1.0.0-beta.2", "1.0.0-beta.1")).toBe(1);
|
||||
|
||||
expect(compareSemverStrings("1.0.0-2", "1.0.0-1")).toBe(1);
|
||||
expect(compareSemverStrings("1.0.0-1", "1.0.0-beta.1")).toBe(-1);
|
||||
expect(compareSemverStrings("1.0.0.beta.2", "1.0.0-beta.1")).toBe(1);
|
||||
expect(compareSemverStrings("1.0.0", "1.0.0.beta.1")).toBe(1);
|
||||
});
|
||||
|
||||
it("returns null for invalid inputs", () => {
|
||||
expect(compareSemverStrings("1.0", "1.0.0")).toBeNull();
|
||||
expect(compareSemverStrings("latest", "1.0.0")).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveNpmChannelTag", () => {
|
||||
let versionByTag: Record<string, string | null>;
|
||||
@@ -43,4 +63,13 @@ describe("resolveNpmChannelTag", () => {
|
||||
|
||||
expect(resolved).toEqual({ tag: "beta", version: "1.0.2-beta.1" });
|
||||
});
|
||||
|
||||
it("falls back to latest when beta has same base as stable", async () => {
|
||||
versionByTag.beta = "1.0.1-beta.2";
|
||||
versionByTag.latest = "1.0.1";
|
||||
|
||||
const resolved = await resolveNpmChannelTag({ channel: "beta", timeoutMs: 1000 });
|
||||
|
||||
expect(resolved).toEqual({ tag: "latest", version: "1.0.1" });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user