from scripts.adapters.lizard import parse_lizard_output def test_parses_high_ccn(): row = "12,15,80,3,15,my_fn@10@src/foo.py\n" findings = parse_lizard_output(row) assert len(findings) == 1 f = findings[0] assert f.tool == "lizard" assert f.severity == "medium" assert f.rule_id == "lizard:ccn=15" assert f.file == "src/foo.py" assert f.line == 10 assert f.end_line == 10 assert "my_fn" in f.message assert "15" in f.message def test_very_high_ccn_is_high(): row = "30,25,200,5,40,complex_fn@5@src/bar.py\n" findings = parse_lizard_output(row) assert findings[0].severity == "high" def test_low_ccn_skipped(): row = "5,3,30,1,6,simple@1@src/foo.py\n" assert parse_lizard_output(row) == [] def test_malformed_row_skipped(): assert parse_lizard_output("1,2,3\n") == [] def test_empty_input(): assert parse_lizard_output("") == []