"""Parser-level tests for the idiom ruff adapter.""" import json from scripts.adapters.ruff_idiom import parse_ruff_idiom_output def _ruff_item(code: str, file: str = "foo.py", row: int = 10) -> dict: return { "code": code, "filename": file, "location": {"row": row, "column": 1}, "end_location": {"row": row, "column": 1}, "message": f"{code} suggestion", } def test_idiom_severity_mapping(): payload = json.dumps([ _ruff_item("SIM117"), _ruff_item("UP008"), _ruff_item("PLR0913"), _ruff_item("C901"), _ruff_item("B008"), ]) findings = parse_ruff_idiom_output(payload) sev = {f.rule_id: f.severity for f in findings} assert sev["SIM117"] == "low" assert sev["UP008"] == "low" assert sev["PLR0913"] == "medium" assert sev["C901"] == "medium" assert sev["B008"] == "medium" def test_idiom_handles_empty_stdout(): assert parse_ruff_idiom_output("") == [] assert parse_ruff_idiom_output("not json") == []