Coverage for tests / unit / utils / result_formatters / test_ruff_formatting.py: 100%
28 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"""Tests for ruff formatting issue detection in print_tool_result."""
3from __future__ import annotations
5from typing import TYPE_CHECKING, Any
7from assertpy import assert_that
9from lintro.utils.result_formatters import print_tool_result
11if TYPE_CHECKING:
12 from collections.abc import Callable
15def test_ruff_detects_would_reformat_files(
16 console_capture_with_kwargs: tuple[
17 Callable[..., None],
18 list[tuple[str, dict[str, Any]]],
19 ],
20 success_capture: tuple[Callable[[str], None], list[str]],
21) -> None:
22 """Verify ruff 'Would reformat' lines are counted as formatting issues.
24 Args:
25 console_capture_with_kwargs: Mock console output capture with kwargs.
26 success_capture: Mock success message capture.
27 """
28 mock_console, console_output = console_capture_with_kwargs
29 mock_success, _ = success_capture
31 output = "Would reformat: file1.py\nWould reformat: file2.py\n[*] 2 fixable"
33 print_tool_result(
34 console_output_func=mock_console,
35 success_func=mock_success,
36 tool_name="ruff",
37 output=output,
38 issues_count=4,
39 action="check",
40 )
42 yellow_texts = [
43 t for t, kwargs in console_output if kwargs.get("color") == "yellow"
44 ]
45 combined = " ".join(yellow_texts)
46 assert_that(combined).contains("formatting/linting issue(s)")
49def test_ruff_detects_files_would_be_reformatted_summary(
50 console_capture_with_kwargs: tuple[
51 Callable[..., None],
52 list[tuple[str, dict[str, Any]]],
53 ],
54 success_capture: tuple[Callable[[str], None], list[str]],
55) -> None:
56 """Verify ruff 'N files would be reformatted' summary is detected.
58 Args:
59 console_capture_with_kwargs: Mock console output capture with kwargs.
60 success_capture: Mock success message capture.
61 """
62 mock_console, console_output = console_capture_with_kwargs
63 mock_success, _ = success_capture
65 output = "Formatting issues:\n3 files would be reformatted"
67 print_tool_result(
68 console_output_func=mock_console,
69 success_func=mock_success,
70 tool_name="ruff",
71 output=output,
72 issues_count=3,
73 action="check",
74 )
76 yellow_texts = [
77 t for t, kwargs in console_output if kwargs.get("color") == "yellow"
78 ]
79 combined = " ".join(yellow_texts)
80 assert_that(combined).contains("formatting/linting issue(s)")
83def test_ruff_tool_name_case_insensitive_for_formatting_detection(
84 console_capture_with_kwargs: tuple[
85 Callable[..., None],
86 list[tuple[str, dict[str, Any]]],
87 ],
88 success_capture: tuple[Callable[[str], None], list[str]],
89) -> None:
90 """Verify ruff formatting detection works regardless of tool name case.
92 Args:
93 console_capture_with_kwargs: Mock console output capture with kwargs.
94 success_capture: Mock success message capture.
95 """
96 mock_console, console_output = console_capture_with_kwargs
97 mock_success, _ = success_capture
99 output = "Would reformat: file.py\nFormatting issues:"
101 print_tool_result(
102 console_output_func=mock_console,
103 success_func=mock_success,
104 tool_name="Ruff",
105 output=output,
106 issues_count=1,
107 action="check",
108 )
110 yellow_texts = [
111 t for t, kwargs in console_output if kwargs.get("color") == "yellow"
112 ]
113 combined = " ".join(yellow_texts)
114 assert_that(combined).contains("formatting/linting issue(s)")