Coverage for tests / unit / utils / output / test_file_writer_plain.py: 100%
23 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"""Unit tests for write_output_file function - Plain/Grid format.
3Tests verify plain text output structure with proper headers and totals.
4"""
6from __future__ import annotations
8from pathlib import Path
9from typing import TYPE_CHECKING
11from assertpy import assert_that
13from lintro.enums.action import Action
14from lintro.enums.output_format import OutputFormat
15from lintro.utils.output.file_writer import write_output_file
17if TYPE_CHECKING:
18 from collections.abc import Callable
20 from .conftest import MockToolResult
23def test_write_plain_file_creates_valid_structure(
24 tmp_path: Path,
25 mock_tool_result_factory: Callable[..., MockToolResult],
26) -> None:
27 """Verify plain text file contains report header and summary totals.
29 Args:
30 tmp_path: Temporary directory path for test output.
31 mock_tool_result_factory: Factory for creating mock tool results.
32 """
33 output_path = tmp_path / "report.txt"
34 results = [mock_tool_result_factory(name="ruff", issues_count=5, output="5 issues")]
36 write_output_file(
37 output_path=str(output_path),
38 output_format=OutputFormat.PLAIN,
39 all_results=results, # type: ignore[arg-type]
40 action=Action.CHECK,
41 total_issues=5,
42 total_fixed=0,
43 )
45 assert_that(output_path.exists()).is_true()
46 content = output_path.read_text()
48 assert_that(content).contains("Lintro Check Report")
49 assert_that(content).contains("=" * 40)
50 assert_that(content).contains("ruff: 5 issues")
51 assert_that(content).contains("Total Issues: 5")
54def test_write_plain_file_shows_fixed_count_for_fix_action(
55 tmp_path: Path,
56 sample_results_empty: list[MockToolResult],
57) -> None:
58 """Verify fix action report includes 'Total Fixed' instead of just issues.
60 Args:
61 tmp_path: Temporary directory path for test output.
62 sample_results_empty: Mock tool results with no issues.
63 """
64 output_path = tmp_path / "report.txt"
66 write_output_file(
67 output_path=str(output_path),
68 output_format=OutputFormat.PLAIN,
69 all_results=sample_results_empty, # type: ignore[arg-type]
70 action=Action.FIX,
71 total_issues=0,
72 total_fixed=5,
73 )
75 content = output_path.read_text()
77 assert_that(content).contains("Lintro Fix Report")
78 assert_that(content).contains("Total Fixed: 5")