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

1"""Tests for shellcheck parser handling multiple issues.""" 

2 

3from __future__ import annotations 

4 

5import json 

6 

7from assertpy import assert_that 

8 

9from lintro.parsers.shellcheck.shellcheck_parser import parse_shellcheck_output 

10 

11from .conftest import make_issue, make_shellcheck_output 

12 

13 

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) 

45 

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") 

51 

52 

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) 

64 

65 assert_that(result).is_length(2)