# test.govlab/quality/core/parsers/tool.knip.parser.test.ts

> 28 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-tool-knip-parser-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/tool.knip.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/tool.kics.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/tool.kics.parser.test.ts.md) and before [test.govlab/quality/core/parsers/tool.lintr.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/tool.lintr.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 { isUnusedFile, parseKnipOutput } from "@govlab/quality/core/parsers/tool.knip.parser.ts";
import { relativePath } from "@ssot/paths";

describe("parseKnipOutput", () => {
    it("reports an unused file and each unused item under its category", () => {
        const stdout = JSON.stringify({
            issues: [{ exports: [{ line: 4, name: "gone" }], file: "a.ts", files: ["a.ts"] }],
        });
        const findings = parseKnipOutput(stdout, "typescript");
        expect(findings.map((finding) => finding.ruleId)).toStrictEqual(["knip/files", "knip/exports"]);
        expect(findings[1]?.message).toBe("Unused export: gone");
        expect(parseKnipOutput("", "typescript")).toStrictEqual([]);
    });
});

describe("isUnusedFile", () => {
    it("is false for knip's empty per-issue files array (an empty array is truthy in JS)", () => {
        expect(isUnusedFile([])).toBe(false);
    });

    it("is true ONLY when the files array is populated (a genuinely unused file)", () => {
        expect(isUnusedFile([`${relativePath("app.member")}/dead.js`])).toBe(true);
    });

    it("falls back to boolean truthiness when files is not an array", () => {
        expect(isUnusedFile(true)).toBe(true);
        expect(isUnusedFile(false)).toBe(false);
        const absent: unknown = null;
        expect(isUnusedFile(absent)).toBe(false);
    });
});
```
