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

> 27 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-parsers-invocation-parser-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/invocation.parser.test.ts.txt

Listed in [test.govlab/quality/core/parsers](https://banes-lab.com/api/source/testing/test.govlab/quality/core/parsers.md), after [test.govlab/quality/core/parsers/css.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/css.parser.test.ts.md) and before [test.govlab/quality/core/parsers/knob.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/knob.parser.test.ts.md).

## Contained in

- [test.govlab/quality/core/parsers](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-quality-core-parsers.md)

## Source

```typescript
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"]);
    });
});
```
