import { describe, expect, it } from "vitest";
import { parseScalastyleXml } from "@govlab/quality/core/parsers/tool.scalastyle.parser.ts";
const EXPECTED_COUNT = 2;
const RECORDED = [
'',
'',
String.raw` `,
' ',
' ',
" ",
"",
].join("\n");
describe("parseScalastyleXml", () => {
it("maps each to a gating (advisory:false) finding keyed by its source, bound to its ", () => {
const findings = parseScalastyleXml(RECORDED, "scala");
expect(findings).toHaveLength(EXPECTED_COUNT);
expect(findings[0]).toMatchObject({
advisory: false,
column: 18,
ecosystem: "scala",
file: "D:\\proj\\scala\\Bad.scala",
line: 6,
message: "Avoid using null",
ruleId: "org.scalastyle.scalariform.NullChecker",
severity: "error",
tool: "scalastyle",
});
expect(findings[1]).toMatchObject({
advisory: false,
column: 1,
line: 3,
ruleId: "org.scalastyle.scalariform.MagicNumberChecker",
severity: "error",
});
});
it("returns [] on empty or error-free XML", () => {
expect(parseScalastyleXml("", "scala")).toEqual([]);
expect(parseScalastyleXml('', "scala")).toEqual([]);
});
});