mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-29 04:57:09 +02:00
108 lines
2.7 KiB
TypeScript
108 lines
2.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
parseRunTimingArgs,
|
|
selectLatestMainPushCiRun,
|
|
summarizeRunTimings,
|
|
} from "../../scripts/ci-run-timings.mjs";
|
|
|
|
describe("scripts/ci-run-timings.mjs", () => {
|
|
it("separates queue time from job duration", () => {
|
|
const summary = summarizeRunTimings(
|
|
{
|
|
conclusion: "success",
|
|
createdAt: "2026-04-22T10:00:00Z",
|
|
jobs: [
|
|
{
|
|
completedAt: "2026-04-22T10:01:20Z",
|
|
conclusion: "success",
|
|
name: "slow",
|
|
startedAt: "2026-04-22T10:00:20Z",
|
|
status: "completed",
|
|
},
|
|
{
|
|
completedAt: "2026-04-22T10:01:00Z",
|
|
conclusion: "success",
|
|
name: "queued",
|
|
startedAt: "2026-04-22T10:00:50Z",
|
|
status: "completed",
|
|
},
|
|
{
|
|
completedAt: "2026-04-22T10:00:01Z",
|
|
conclusion: "skipped",
|
|
name: "matrix.check_name",
|
|
startedAt: "2026-04-22T10:00:01Z",
|
|
status: "completed",
|
|
},
|
|
],
|
|
status: "completed",
|
|
updatedAt: "2026-04-22T10:01:30Z",
|
|
},
|
|
2,
|
|
);
|
|
|
|
expect(summary.wallSeconds).toBe(90);
|
|
expect(summary.byDuration.map((job) => [job.name, job.durationSeconds])).toEqual([
|
|
["slow", 60],
|
|
["queued", 10],
|
|
]);
|
|
expect(summary.byQueue.map((job) => [job.name, job.queueSeconds])).toEqual([
|
|
["queued", 50],
|
|
["slow", 20],
|
|
]);
|
|
});
|
|
|
|
it("selects the push CI run for the current main SHA", () => {
|
|
expect(
|
|
selectLatestMainPushCiRun(
|
|
[
|
|
{
|
|
databaseId: 3,
|
|
event: "issue_comment",
|
|
headSha: "current",
|
|
},
|
|
{
|
|
databaseId: 2,
|
|
event: "push",
|
|
headSha: "older",
|
|
},
|
|
{
|
|
databaseId: 1,
|
|
event: "push",
|
|
headSha: "current",
|
|
},
|
|
],
|
|
"current",
|
|
),
|
|
).toMatchObject({ databaseId: 1 });
|
|
});
|
|
|
|
it("falls back to the newest push CI run when the exact SHA has not appeared yet", () => {
|
|
expect(
|
|
selectLatestMainPushCiRun(
|
|
[
|
|
{
|
|
databaseId: 4,
|
|
event: "issue_comment",
|
|
headSha: "current",
|
|
},
|
|
{
|
|
databaseId: 3,
|
|
event: "push",
|
|
headSha: "previous",
|
|
},
|
|
],
|
|
"current",
|
|
),
|
|
).toMatchObject({ databaseId: 3 });
|
|
});
|
|
|
|
it("ignores pnpm passthrough sentinels when parsing monitor args", () => {
|
|
expect(parseRunTimingArgs(["--latest-main", "--", "--limit", "3"])).toEqual({
|
|
explicitRunId: undefined,
|
|
limit: 3,
|
|
recentLimit: null,
|
|
useLatestMain: true,
|
|
});
|
|
});
|
|
});
|