from pathlib import Path from scripts.adapters.mypy import parse_mypy_output _FIXTURES = Path(__file__).parent / "fixtures" def test_parses_error_lines(): txt = (_FIXTURES / "mypy_sample.txt").read_text() findings = parse_mypy_output(txt) by_line = {f.line: f for f in findings if f.file == "src/api.py"} assert 12 in by_line assert by_line[12].severity == "medium" assert by_line[12].rule_id == "assignment" def test_parses_warning_lines(): txt = (_FIXTURES / "mypy_sample.txt").read_text() findings = parse_mypy_output(txt) warns = [f for f in findings if f.severity == "low"] assert any(f.line == 60 and f.rule_id == "unused-ignore" for f in warns) def test_skips_note_lines(): txt = (_FIXTURES / "mypy_sample.txt").read_text() findings = parse_mypy_output(txt) assert not any(f.file == "src/utils.py" and f.line == 8 for f in findings) def test_handles_empty_input(): assert parse_mypy_output("") == []