mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-01 20:31:19 +00:00
104 lines
2.6 KiB
TypeScript
104 lines
2.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
checkMinHostVersion,
|
|
MIN_HOST_VERSION_FORMAT,
|
|
parseMinHostVersionRequirement,
|
|
validateMinHostVersion,
|
|
} from "./min-host-version.js";
|
|
|
|
const MIN_HOST_REQUIREMENT = {
|
|
raw: ">=2026.3.22",
|
|
minimumLabel: "2026.3.22",
|
|
};
|
|
|
|
function expectValidHostCheck(currentVersion: string, minHostVersion?: string) {
|
|
expectHostCheckResult({
|
|
currentVersion,
|
|
minHostVersion,
|
|
expected: {
|
|
ok: true,
|
|
requirement: minHostVersion ? MIN_HOST_REQUIREMENT : null,
|
|
},
|
|
});
|
|
}
|
|
|
|
function expectHostCheckResult(params: {
|
|
currentVersion: string;
|
|
minHostVersion?: string | number;
|
|
expected: unknown;
|
|
}) {
|
|
expect(
|
|
checkMinHostVersion({
|
|
currentVersion: params.currentVersion,
|
|
minHostVersion: params.minHostVersion,
|
|
}),
|
|
).toEqual(params.expected);
|
|
}
|
|
|
|
function expectInvalidMinHostVersion(minHostVersion: string | number) {
|
|
expect(validateMinHostVersion(minHostVersion)).toBe(MIN_HOST_VERSION_FORMAT);
|
|
expectHostCheckResult({
|
|
currentVersion: "2026.3.22",
|
|
minHostVersion,
|
|
expected: {
|
|
ok: false,
|
|
kind: "invalid",
|
|
error: MIN_HOST_VERSION_FORMAT,
|
|
},
|
|
});
|
|
}
|
|
|
|
describe("min-host-version", () => {
|
|
it("accepts empty metadata", () => {
|
|
expect(validateMinHostVersion(undefined)).toBeNull();
|
|
expect(parseMinHostVersionRequirement(undefined)).toBeNull();
|
|
expectValidHostCheck("2026.3.22");
|
|
});
|
|
|
|
it("parses semver floors", () => {
|
|
expect(parseMinHostVersionRequirement(">=2026.3.22")).toEqual(MIN_HOST_REQUIREMENT);
|
|
});
|
|
|
|
it.each(["2026.3.22", 123, ">=2026.3.22 garbage"] as const)(
|
|
"rejects invalid floor syntax and host checks: %p",
|
|
(minHostVersion) => {
|
|
expectInvalidMinHostVersion(minHostVersion);
|
|
},
|
|
);
|
|
|
|
it.each([
|
|
{
|
|
name: "reports unknown host versions distinctly",
|
|
currentVersion: "unknown",
|
|
expected: {
|
|
ok: false,
|
|
kind: "unknown_host_version",
|
|
requirement: MIN_HOST_REQUIREMENT,
|
|
},
|
|
},
|
|
{
|
|
name: "reports incompatible hosts",
|
|
currentVersion: "2026.3.21",
|
|
expected: {
|
|
ok: false,
|
|
kind: "incompatible",
|
|
currentVersion: "2026.3.21",
|
|
requirement: MIN_HOST_REQUIREMENT,
|
|
},
|
|
},
|
|
] as const)("$name", ({ currentVersion, expected }) => {
|
|
expectHostCheckResult({
|
|
currentVersion,
|
|
minHostVersion: ">=2026.3.22",
|
|
expected,
|
|
});
|
|
});
|
|
|
|
it.each(["2026.3.22", "2026.4.0"] as const)(
|
|
"accepts equal or newer hosts: %s",
|
|
(currentVersion) => {
|
|
expectValidHostCheck(currentVersion, ">=2026.3.22");
|
|
},
|
|
);
|
|
});
|