Coverage for tests / unit / parsers / shellcheck_parser / test_multiple_issues.py: 100%
18 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 shellcheck parser handling multiple issues."""
3from __future__ import annotations
5import json
7from assertpy import assert_that
9from lintro.parsers.shellcheck.shellcheck_parser import parse_shellcheck_output
11from .conftest import make_issue, make_shellcheck_output
14def test_parse_multiple_issues() -> None:
15 """Parse multiple issues."""
16 output = make_shellcheck_output(
17 [
18 make_issue(
19 file="script.sh",
20 line=5,
21 column=1,
22 level="error",
23 code=1072,
24 message="Error message",
25 ),
26 make_issue(
27 file="script.sh",
28 line=10,
29 column=5,
30 level="warning",
31 code=2086,
32 message="Warning message",
33 ),
34 make_issue(
35 file="other.sh",
36 line=3,
37 column=10,
38 level="info",
39 code=2034,
40 message="Info message",
41 ),
42 ],
43 )
44 result = parse_shellcheck_output(output=output)
46 assert_that(result).is_length(3)
47 assert_that(result[0].line).is_equal_to(5)
48 assert_that(result[1].line).is_equal_to(10)
49 assert_that(result[2].line).is_equal_to(3)
50 assert_that(result[2].file).is_equal_to("other.sh")
53def test_parse_skips_non_dict_items() -> None:
54 """Parse skips non-dictionary items in array."""
55 data = [
56 make_issue(line=5, level="error", code=1072, message="Valid issue"),
57 "not a dict",
58 123,
59 None,
60 make_issue(line=10, level="warning", code=2086, message="Another valid issue"),
61 ]
62 output = json.dumps(data)
63 result = parse_shellcheck_output(output=output)
65 assert_that(result).is_length(2)