refactor: share system presence version checks

This commit is contained in:
Peter Steinberger
2026-03-13 17:35:07 +00:00
parent b697c05354
commit 8633d2e0a9

View File

@@ -13,46 +13,47 @@ async function withPresenceModule<T>(
}
describe("system-presence version fallback", () => {
async function expectSelfVersion(
env: Record<string, string | undefined>,
expectedVersion: string | (() => Promise<string>),
) {
await withPresenceModule(env, async ({ listSystemPresence }) => {
const selfEntry = listSystemPresence().find((entry) => entry.reason === "self");
const resolvedExpected =
typeof expectedVersion === "function" ? await expectedVersion() : expectedVersion;
expect(selfEntry?.version).toBe(resolvedExpected);
});
}
it("uses runtime VERSION when OPENCLAW_VERSION is not set", async () => {
await withPresenceModule(
await expectSelfVersion(
{
OPENCLAW_SERVICE_VERSION: "2.4.6-service",
npm_package_version: "1.0.0-package",
},
async ({ listSystemPresence }) => {
const { VERSION } = await import("../version.js");
const selfEntry = listSystemPresence().find((entry) => entry.reason === "self");
expect(selfEntry?.version).toBe(VERSION);
},
async () => (await import("../version.js")).VERSION,
);
});
it("prefers OPENCLAW_VERSION over runtime VERSION", async () => {
await withPresenceModule(
await expectSelfVersion(
{
OPENCLAW_VERSION: "9.9.9-cli",
OPENCLAW_SERVICE_VERSION: "2.4.6-service",
npm_package_version: "1.0.0-package",
},
({ listSystemPresence }) => {
const selfEntry = listSystemPresence().find((entry) => entry.reason === "self");
expect(selfEntry?.version).toBe("9.9.9-cli");
},
"9.9.9-cli",
);
});
it("uses runtime VERSION when OPENCLAW_VERSION and OPENCLAW_SERVICE_VERSION are blank", async () => {
await withPresenceModule(
await expectSelfVersion(
{
OPENCLAW_VERSION: " ",
OPENCLAW_SERVICE_VERSION: "\t",
npm_package_version: "1.0.0-package",
},
async ({ listSystemPresence }) => {
const { VERSION } = await import("../version.js");
const selfEntry = listSystemPresence().find((entry) => entry.reason === "self");
expect(selfEntry?.version).toBe(VERSION);
},
async () => (await import("../version.js")).VERSION,
);
});
});