Coverage for tests / unit / parsers / base_parser / test_continuation_lines.py: 100%
28 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 collect_continuation_lines function."""
3from __future__ import annotations
5from assertpy import assert_that
7from lintro.parsers.base_parser import collect_continuation_lines
10def test_collect_continuation_lines_with_indented_lines() -> None:
11 """Collect indented continuation lines."""
12 lines = ["main message", " continued", " more", "next item"]
13 message, next_idx = collect_continuation_lines(
14 lines,
15 1,
16 lambda line: line.startswith(" "),
17 )
18 assert_that(message).is_equal_to("continued more")
19 assert_that(next_idx).is_equal_to(3)
22def test_collect_continuation_lines_with_colon_prefix() -> None:
23 """Collect lines with colon prefix."""
24 lines = ["error:", ": detail1", ": detail2", "next"]
25 message, next_idx = collect_continuation_lines(
26 lines,
27 1,
28 lambda line: line.strip().startswith(":"),
29 )
30 assert_that(message).is_equal_to("detail1 detail2")
31 assert_that(next_idx).is_equal_to(3)
34def test_collect_continuation_lines_no_continuations() -> None:
35 """Return empty message when no continuation lines found."""
36 lines = ["main message", "not indented"]
37 message, next_idx = collect_continuation_lines(
38 lines,
39 1,
40 lambda line: line.startswith(" "),
41 )
42 assert_that(message).is_equal_to("")
43 assert_that(next_idx).is_equal_to(1)
46def test_collect_continuation_lines_at_end() -> None:
47 """Handle continuation at end of lines list."""
48 lines = ["main", " last"]
49 message, next_idx = collect_continuation_lines(
50 lines,
51 1,
52 lambda line: line.startswith(" "),
53 )
54 assert_that(message).is_equal_to("last")
55 assert_that(next_idx).is_equal_to(2)
58def test_collect_continuation_lines_empty_continuation() -> None:
59 """Skip empty continuation lines."""
60 lines = ["main", " ", " content"]
61 message, next_idx = collect_continuation_lines(
62 lines,
63 1,
64 lambda line: line.startswith(" "),
65 )
66 assert_that(message).is_equal_to("content")
67 assert_that(next_idx).is_equal_to(3)