Coverage for tests / unit / parsers / shellcheck_parser / conftest.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Shared fixtures and utilities for shellcheck parser tests.""" 

2 

3from __future__ import annotations 

4 

5import json 

6from typing import Any 

7 

8 

9def make_shellcheck_output(issues: list[dict[str, Any]]) -> str: 

10 """Create JSON output string from a list of issue dictionaries. 

11 

12 Args: 

13 issues: List of issue dictionaries to serialize. 

14 

15 Returns: 

16 JSON string representation of the issues. 

17 """ 

18 return json.dumps(issues) 

19 

20 

21def make_issue( 

22 *, 

23 file: str = "script.sh", 

24 line: int = 10, 

25 column: int = 5, 

26 level: str = "warning", 

27 code: int | str = 2086, 

28 message: str = "Test message", 

29 end_line: int | None = None, 

30 end_column: int | None = None, 

31) -> dict[str, Any]: 

32 """Create a shellcheck issue dictionary with sensible defaults. 

33 

34 Args: 

35 file: The file path. 

36 line: The line number. 

37 column: The column number. 

38 level: The severity level. 

39 code: The error code. 

40 message: The error message. 

41 end_line: Optional end line number. 

42 end_column: Optional end column number. 

43 

44 Returns: 

45 Dictionary representing a shellcheck issue. 

46 """ 

47 issue: dict[str, Any] = { 

48 "file": file, 

49 "line": line, 

50 "column": column, 

51 "level": level, 

52 "code": code, 

53 "message": message, 

54 } 

55 if end_line is not None: 

56 issue["endLine"] = end_line 

57 if end_column is not None: 

58 issue["endColumn"] = end_column 

59 return issue