File size: 1,660 Bytes
f778c12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Cron cause display tests cover cron error-cause formatting for users.
import { describe, expect, it } from "vitest";
import { defaultRuntime } from "../../runtime.js";
import { printCronJson } from "./shared.js";

describe("printCronJson cause display", () => {
  it("adds an additive cause without changing raw cron run errors", () => {
    let written: unknown;
    const original = defaultRuntime.writeJson;
    defaultRuntime.writeJson = (value: unknown) => {
      written = value;
    };
    try {
      printCronJson({
        entries: [
          {
            ts: 1,
            jobId: "job-1",
            action: "finished",
            status: "error",
            errorReason: "timeout",
            error: "cron: job execution timed out",
          },
        ],
      });
    } finally {
      defaultRuntime.writeJson = original;
    }

    const result = written as { entries: Array<Record<string, unknown>> };
    expect(result.entries[0]?.cause).toBe("timeout");
    expect(result.entries[0]?.error).toBe("cron: job execution timed out");
    expect(result.entries[0]?.errorReason).toBe("timeout");
  });

  it("does not add cause fields to non-run-log entries", () => {
    let written: unknown;
    const original = defaultRuntime.writeJson;
    defaultRuntime.writeJson = (value: unknown) => {
      written = value;
    };
    try {
      printCronJson({
        entries: [{ errorReason: "timeout", status: "error" }],
      });
    } finally {
      defaultRuntime.writeJson = original;
    }

    const result = written as { entries: Array<Record<string, unknown>> };
    expect(result.entries[0]?.cause).toBeUndefined();
  });
});