mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-19 00:52:10 -06:00
c23d66e3b5
* refactor: consolidate coercion ownership * test: align shard check with weighted planning * chore: refresh plugin SDK API baseline
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
import { resolveBuildIdentityEnvironment } from "../../scripts/lib/build-identity.mts";
|
|
|
|
describe("resolveBuildIdentityEnvironment", () => {
|
|
it.each([
|
|
{
|
|
env: { GIT_COMMIT: "A".repeat(40), GIT_SHA: "b".repeat(40) },
|
|
expected: "a".repeat(40),
|
|
readsCheckout: false,
|
|
},
|
|
{
|
|
env: { GIT_SHA: "B".repeat(40), GITHUB_SHA: "c".repeat(40) },
|
|
expected: "b".repeat(40),
|
|
readsCheckout: false,
|
|
},
|
|
{
|
|
env: { GITHUB_SHA: "c".repeat(40) },
|
|
expected: "d".repeat(40),
|
|
readsCheckout: true,
|
|
},
|
|
])("preserves build source precedence %#", ({ env, expected, readsCheckout }) => {
|
|
const readGitCommit = vi.fn(() => "D".repeat(40));
|
|
const resolved = resolveBuildIdentityEnvironment({
|
|
commitLabel: "build commit",
|
|
env,
|
|
now: () => new Date("2026-07-10T12:34:56.000Z"),
|
|
readGitCommit,
|
|
});
|
|
|
|
expect(resolved.GIT_COMMIT).toBe(expected);
|
|
expect(readGitCommit).toHaveBeenCalledTimes(readsCheckout ? 1 : 0);
|
|
});
|
|
|
|
it("uses workflow identity only when the checkout cannot be read", () => {
|
|
expect(
|
|
resolveBuildIdentityEnvironment({
|
|
commitLabel: "runtime pack commit",
|
|
env: {
|
|
GITHUB_SHA: "e".repeat(40),
|
|
OPENCLAW_BUILD_TIMESTAMP: " 2026-07-10T01:02:03.000Z ",
|
|
},
|
|
now: () => new Date("2026-07-11T12:34:56.000Z"),
|
|
readGitCommit: () => null,
|
|
}),
|
|
).toMatchObject({
|
|
GIT_COMMIT: "e".repeat(40),
|
|
OPENCLAW_BUILD_TIMESTAMP: "2026-07-10T01:02:03.000Z",
|
|
});
|
|
});
|
|
|
|
it("uses the owner label in malformed commit diagnostics", () => {
|
|
expect(() =>
|
|
resolveBuildIdentityEnvironment({
|
|
commitLabel: "runtime pack commit",
|
|
env: { GIT_COMMIT: "deadbeef" },
|
|
readGitCommit: () => null,
|
|
}),
|
|
).toThrow("runtime pack commit must be a full 40-character hexadecimal SHA");
|
|
});
|
|
});
|