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
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Parser for pytest output.
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
8All parsing functions are re-exported from submodules for backwards compatibility.
9"""
11from __future__ import annotations
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
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.
31 Args:
32 output: Raw output from pytest.
33 format: Output format - accepts "json", "text", "junit" strings
34 or PytestOutputFormat enum values.
36 Returns:
37 list[PytestIssue]: Parsed test failures and errors.
38 """
39 format_enum = normalize_pytest_output_format(format)
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)
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]