Coverage for tests / unit / utils / result_formatters / test_output_display.py: 100%
22 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 output display behavior 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_non_empty_output_is_displayed(
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 non-empty output is included in console output.
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 print_tool_result(
32 console_output_func=mock_console,
33 success_func=mock_success,
34 tool_name="ruff",
35 output="Some lint output",
36 issues_count=1,
37 )
39 texts = [t for t, _ in console_output]
40 assert_that(texts).contains("Some lint output")
43def test_whitespace_only_output_not_displayed(
44 console_capture_with_kwargs: tuple[
45 Callable[..., None],
46 list[tuple[str, dict[str, Any]]],
47 ],
48 success_capture: tuple[Callable[[str], None], list[str]],
49) -> None:
50 """Verify whitespace-only output results in success message instead.
52 Args:
53 console_capture_with_kwargs: Mock console output capture with kwargs.
54 success_capture: Mock success message capture.
55 """
56 mock_console, _ = console_capture_with_kwargs
57 mock_success, success_calls = success_capture
59 print_tool_result(
60 console_output_func=mock_console,
61 success_func=mock_success,
62 tool_name="ruff",
63 output=" \n \t ",
64 issues_count=0,
65 )
67 assert_that(success_calls).contains("✓ No issues found.")
70def test_blank_line_appended_after_output(
71 console_capture_with_kwargs: tuple[
72 Callable[..., None],
73 list[tuple[str, dict[str, Any]]],
74 ],
75 success_capture: tuple[Callable[[str], None], list[str]],
76) -> None:
77 """Verify blank line appended after tool output for visual separation.
79 Args:
80 console_capture_with_kwargs: Mock console output capture with kwargs.
81 success_capture: Mock success message capture.
82 """
83 mock_console, console_output = console_capture_with_kwargs
84 mock_success, _ = success_capture
86 print_tool_result(
87 console_output_func=mock_console,
88 success_func=mock_success,
89 tool_name="ruff",
90 output="",
91 issues_count=0,
92 )
94 assert_that(console_output).is_not_empty()
95 last_text, _ = console_output[-1]
96 assert_that(last_text).is_equal_to("")