Coverage for lintro / parsers / pytest / pytest_parser.py: 100%

14 statements  

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

1"""Parser for pytest output. 

2 

3This module provides functions to parse pytest output in various formats: 

4- JSON output from pytest --json-report 

5- Plain text output from pytest 

6- JUnit XML output from pytest --junitxml 

7 

8All parsing functions are re-exported from submodules for backwards compatibility. 

9""" 

10 

11from __future__ import annotations 

12 

13from lintro.enums.pytest_enums import PytestOutputFormat, normalize_pytest_output_format 

14from lintro.parsers.pytest.format_parsers import ( 

15 _parse_json_test_item, 

16 parse_pytest_json_output, 

17 parse_pytest_junit_xml, 

18 parse_pytest_text_output, 

19) 

20from lintro.parsers.pytest.models import PytestSummary 

21from lintro.parsers.pytest.pytest_issue import PytestIssue 

22from lintro.parsers.pytest.summary_extractor import extract_pytest_summary 

23 

24 

25def parse_pytest_output( 

26 output: str, 

27 format: str | PytestOutputFormat = PytestOutputFormat.TEXT, 

28) -> list[PytestIssue]: 

29 """Parse pytest output based on the specified format. 

30 

31 Args: 

32 output: Raw output from pytest. 

33 format: Output format - accepts "json", "text", "junit" strings 

34 or PytestOutputFormat enum values. 

35 

36 Returns: 

37 list[PytestIssue]: Parsed test failures and errors. 

38 """ 

39 format_enum = normalize_pytest_output_format(format) 

40 

41 if format_enum == PytestOutputFormat.JSON: 

42 return parse_pytest_json_output(output) 

43 elif format_enum == PytestOutputFormat.JUNIT: 

44 return parse_pytest_junit_xml(output) 

45 else: 

46 return parse_pytest_text_output(output) 

47 

48 

49__all__ = [ 

50 "PytestIssue", 

51 "PytestSummary", 

52 "_parse_json_test_item", 

53 "extract_pytest_summary", 

54 "parse_pytest_json_output", 

55 "parse_pytest_junit_xml", 

56 "parse_pytest_output", 

57 "parse_pytest_text_output", 

58]