test.govlab/quality/core/parsers/invocation.parser.test.ts

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

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

describe("parseCliArgs", () => {
    it("reads a concern, its paths and fix on by default", () => {
        const args = parseCliArgs(["eslint", "src"]);
        expect(args.concern).toBe("eslint");
        expect(args.paths).toStrictEqual(["src"]);
        expect(args.fix).toBe(true);
    });

    it("reads a known reporter", () => {
        expect(parseCliArgs(["eslint", "--reporter", "json"]).reporter).toBe("json");
    });

    it("refuses an unknown reporter rather than falling back to the default", () => {
        expect(() => parseCliArgs(["eslint", "--reporter", "xml"])).toThrow('unknown reporter "xml"');
    });

    it("refuses a value flag with no value", () => {
        expect(() => parseCliArgs(["eslint", "--config"])).toThrow("--config needs a value");
        expect(() => parseCliArgs(["eslint", "--reporter", "--no-fix"])).toThrow("--reporter needs a value");
    });

    it("refuses an unknown flag and an unknown concern", () => {
        expect(() => parseCliArgs(["eslint", "--fast"])).toThrow('unknown flag "--fast"');
        expect(() => parseCliArgs(["lints"])).toThrow('unknown concern "lints"');
    });

    it("reads install positionals as ecosystems", () => {
        expect(parseCliArgs(["install", "python", "go"]).ecosystems).toStrictEqual(["python", "go"]);
    });
});