test.govlab/quality/core/parsers/tool.clj-kondo.parser.test.ts
test.govlab/quality/core/parsers/tool.clj-kondo.parser.test.ts is a file in Codebase Testing. 46 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { parseCljKondoOutput } from "@govlab/quality/core/parsers/tool.clj-kondo.parser.ts";
const EXPECTED_COUNT = 2;
const RECORDED = JSON.stringify({
findings: [
{
col: 16,
filename: "govlab-governance/polyglot/clojure/bad.clj",
level: "warning",
message: "unused binding x",
row: 3,
type: "unused-binding",
},
{
col: 1,
filename: "govlab-governance/polyglot/clojure/bad.clj",
level: "error",
message: "redefined var #'bad/dup",
row: 7,
type: "redefined-var",
},
],
summary: { error: 1, warning: 1 },
});
describe("parseCljKondoOutput", () => {
it("maps each finding to a gating (advisory:false) finding keyed by its type, level→severity", () => {
const findings = parseCljKondoOutput(RECORDED, "clojure");
expect(findings).toHaveLength(EXPECTED_COUNT);
expect(findings[0]).toMatchObject({
advisory: false,
column: 16,
ecosystem: "clojure",
file: "govlab-governance/polyglot/clojure/bad.clj",
line: 3,
ruleId: "unused-binding",
severity: "error",
tool: "clj-kondo",
});
expect(findings[1]).toMatchObject({ advisory: false, line: 7, ruleId: "redefined-var", severity: "error" });
});
it("returns [] on empty, no-findings, or non-JSON output", () => {
expect(parseCljKondoOutput("", "clojure")).toEqual([]);
expect(parseCljKondoOutput(JSON.stringify({ findings: [] }), "clojure")).toEqual([]);
expect(parseCljKondoOutput("not json", "clojure")).toEqual([]);
});
});