test.govlab/quality/core/parsers/tool.ruff.parser.test.ts
test.govlab/quality/core/parsers/tool.ruff.parser.test.ts is a file in Codebase Testing. 42 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { parseRuffOutput } from "@govlab/quality/core/parsers/tool.ruff.parser.ts";
const EXPECTED_COUNT = 2;
const RECORDED = JSON.stringify([
{
code: "F401",
filename: "/proj/app.py",
fix: { applicability: "safe", message: "Remove unused import: `os`" },
location: { column: 8, row: 1 },
message: "`os` imported but unused",
},
{
code: "PLR0913",
filename: "/proj/app.py",
fix: null,
location: { column: 5, row: 10 },
message: "Too many arguments in function definition (7 > 4)",
},
]);
describe("parseRuffOutput", () => {
it("maps ruff JSON diagnostics to advisory:false Findings", () => {
const findings = parseRuffOutput(RECORDED, "python");
expect(findings).toHaveLength(EXPECTED_COUNT);
expect(findings[0]).toMatchObject({
advisory: false,
column: 8,
ecosystem: "python",
file: "/proj/app.py",
fixable: true,
line: 1,
ruleId: "F401",
severity: "error",
tool: "ruff",
});
expect(findings[1]).toMatchObject({ advisory: false, column: 5, fixable: false, line: 10, ruleId: "PLR0913" });
});
it("returns [] on empty, empty-array, or non-JSON output", () => {
expect(parseRuffOutput("", "python")).toEqual([]);
expect(parseRuffOutput("[]", "python")).toEqual([]);
expect(parseRuffOutput("not json", "python")).toEqual([]);
});
});