test.govlab/quality/core/parsers/tool.scalastyle.parser.test.ts

test.govlab/quality/core/parsers/tool.scalastyle.parser.test.ts is a file in Codebase Testing. 40 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { parseScalastyleXml } from "@govlab/quality/core/parsers/tool.scalastyle.parser.ts";

const EXPECTED_COUNT = 2;

const RECORDED = [
    '<?xml version="1.0" encoding="UTF-8"?>',
    '<checkstyle version="5.0">',
    String.raw` <file name="D:\proj\scala\Bad.scala">`,
    '  <error column="18" line="6" source="org.scalastyle.scalariform.NullChecker" severity="error" message="Avoid using null"/>',
    '  <error line="3" source="org.scalastyle.scalariform.MagicNumberChecker" severity="warning" message="Magic Number found: 42"/>',
    " </file>",
    "</checkstyle>",
].join("\n");

describe("parseScalastyleXml", () => {
    it("maps each <error> to a gating (advisory:false) finding keyed by its source, bound to its <file>", () => {
        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('<checkstyle version="5.0"></checkstyle>', "scala")).toEqual([]);
    });
});