mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-29 01:52:04 +00:00
fix(test): restore bundled loader coverage
This commit is contained in:
@@ -71,7 +71,7 @@ describe("CronService store load", () => {
|
||||
|
||||
const jobs = await cron.list({ includeDisabled: true });
|
||||
expect(jobs[0]?.state.lastStatus).toBe("skipped");
|
||||
expect(jobs[0]?.state.lastError).toMatch(/main job requires/i);
|
||||
expect(jobs[0]?.state.lastError).toMatch(/main cron jobs require payload\.kind/i);
|
||||
|
||||
cron.stop();
|
||||
});
|
||||
|
||||
@@ -367,7 +367,7 @@ type PreparedManualRun =
|
||||
| {
|
||||
ok: true;
|
||||
ran: false;
|
||||
reason: "already-running" | "not-due";
|
||||
reason: "already-running" | "not-due" | "invalid-spec";
|
||||
}
|
||||
| {
|
||||
ok: true;
|
||||
@@ -399,6 +399,48 @@ function createCronTaskRunId(jobId: string, startedAt: number): string {
|
||||
return `cron:${jobId}:${startedAt}`;
|
||||
}
|
||||
|
||||
async function skipInvalidPersistedManualRun(params: {
|
||||
state: CronServiceState;
|
||||
job: CronJob;
|
||||
mode?: "due" | "force";
|
||||
error: unknown;
|
||||
}) {
|
||||
const endedAt = params.state.deps.nowMs();
|
||||
const errorText = normalizeCronRunErrorText(params.error);
|
||||
const shouldDelete = applyJobResult(
|
||||
params.state,
|
||||
params.job,
|
||||
{
|
||||
status: "skipped",
|
||||
error: errorText,
|
||||
startedAt: endedAt,
|
||||
endedAt,
|
||||
},
|
||||
{ preserveSchedule: params.mode === "force" },
|
||||
);
|
||||
|
||||
emit(params.state, {
|
||||
jobId: params.job.id,
|
||||
action: "finished",
|
||||
status: "skipped",
|
||||
error: errorText,
|
||||
runAtMs: endedAt,
|
||||
durationMs: params.job.state.lastDurationMs,
|
||||
nextRunAtMs: params.job.state.nextRunAtMs,
|
||||
deliveryStatus: params.job.state.lastDeliveryStatus,
|
||||
deliveryError: params.job.state.lastDeliveryError,
|
||||
});
|
||||
|
||||
if (shouldDelete && params.state.store) {
|
||||
params.state.store.jobs = params.state.store.jobs.filter((entry) => entry.id !== params.job.id);
|
||||
emit(params.state, { jobId: params.job.id, action: "removed" });
|
||||
}
|
||||
|
||||
recomputeNextRunsForMaintenance(params.state, { recomputeExpired: true });
|
||||
await persist(params.state);
|
||||
armTimer(params.state);
|
||||
}
|
||||
|
||||
function tryCreateManualTaskRun(params: {
|
||||
state: CronServiceState;
|
||||
job: CronJob;
|
||||
@@ -489,7 +531,12 @@ async function inspectManualRunPreflight(
|
||||
// persist does not block manual triggers for up to STUCK_RUN_MS (#17554).
|
||||
recomputeNextRunsForMaintenance(state);
|
||||
const job = findJobOrThrow(state, id);
|
||||
assertSupportedJobSpec(job);
|
||||
try {
|
||||
assertSupportedJobSpec(job);
|
||||
} catch (error) {
|
||||
await skipInvalidPersistedManualRun({ state, job, mode, error });
|
||||
return { ok: true, ran: false, reason: "invalid-spec" as const };
|
||||
}
|
||||
if (typeof job.state.runningAtMs === "number") {
|
||||
return { ok: true, ran: false, reason: "already-running" as const };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user