from pathlib import Path from scripts.adapters.ruff import parse_ruff_output _FIXTURES = Path(__file__).parent / "fixtures" def test_parses_findings(): payload = (_FIXTURES / "ruff_sample.json").read_text() findings = parse_ruff_output(payload) by_rule = {f.rule_id: f for f in findings} assert "S608" in by_rule assert by_rule["S608"].severity == "high" assert by_rule["S608"].file == "src/api.py" assert by_rule["S608"].line == 45 def test_severity_inferred_from_prefix(): payload = (_FIXTURES / "ruff_sample.json").read_text() findings = parse_ruff_output(payload) by_rule = {f.rule_id: f for f in findings} assert by_rule["S608"].severity == "high" assert by_rule["E501"].severity == "low" assert by_rule["F401"].severity == "low" def test_handles_empty(): assert parse_ruff_output("[]") == [] def test_handles_invalid_json(): assert parse_ruff_output("not json") == []