import json from scripts.adapters.knip import parse_knip_output def test_parses_dead_export(): payload = { "issues": [ { "file": "src/foo.ts", "exports": [{"name": "unusedExport", "line": 12, "col": 1}], } ] } findings = parse_knip_output(json.dumps(payload)) assert len(findings) == 1 f = findings[0] assert f.tool == "knip" assert f.rule_id == "knip:dead-export" assert f.severity == "medium" assert f.file == "src/foo.ts" assert f.line == 12 assert "unusedExport" in f.message def test_multiple_exports(): payload = { "issues": [ { "file": "src/foo.ts", "exports": [ {"name": "exportA", "line": 5, "col": 1}, {"name": "exportB", "line": 10, "col": 1}, ], } ] } findings = parse_knip_output(json.dumps(payload)) assert len(findings) == 2 def test_empty_or_no_issues(): assert parse_knip_output("") == [] assert parse_knip_output("{}") == [] assert parse_knip_output(json.dumps({"issues": []})) == [] assert parse_knip_output("not json") == []