Coverage for tests / unit / parsers / pydoclint_parser / test_invalid_input.py: 100%
24 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for pydoclint parser handling of invalid/empty input."""
3from __future__ import annotations
5import pytest
6from assertpy import assert_that
8from lintro.parsers.pydoclint.pydoclint_parser import parse_pydoclint_output
11@pytest.mark.parametrize(
12 "output",
13 [
14 None,
15 "",
16 " \n \n ",
17 ],
18 ids=["none", "empty", "whitespace_only"],
19)
20def test_parse_returns_empty_for_no_content(
21 output: str | None,
22) -> None:
23 """Parse empty, None, or whitespace-only output returns empty list.
25 Args:
26 output: The pydoclint output to parse.
27 """
28 result = parse_pydoclint_output(output=output)
29 assert_that(result).is_empty()
32def test_parse_returns_empty_for_malformed_line() -> None:
33 """Parse malformed lines returns empty list."""
34 result = parse_pydoclint_output(output="this is not valid output")
35 assert_that(result).is_empty()
38def test_parse_returns_empty_for_missing_code() -> None:
39 """Parse line without DOC code returns empty list."""
40 result = parse_pydoclint_output(output="test.py:10:5: Missing code message")
41 assert_that(result).is_empty()
44def test_parse_skips_malformed_lines_in_mixed_output() -> None:
45 """Parse mixed valid and invalid lines only returns valid issues."""
46 output = """test.py
47 10: DOC101: Valid issue
48malformed line without proper format
49another.py
50 20: DOC201: Another valid issue
51"""
52 result = parse_pydoclint_output(output=output)
54 assert_that(result).is_length(2)
55 assert_that(result[0].code).is_equal_to("DOC101")
56 assert_that(result[1].code).is_equal_to("DOC201")
59def test_parse_handles_missing_line_number() -> None:
60 """Parse issue line without proper line number returns empty."""
61 output = """test.py
62 : DOC101: Message without line number"""
63 result = parse_pydoclint_output(output=output)
64 assert_that(result).is_empty()