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

1"""Tests for output display behavior in print_tool_result.""" 

2 

3from __future__ import annotations 

4 

5from typing import TYPE_CHECKING, Any 

6 

7from assertpy import assert_that 

8 

9from lintro.utils.result_formatters import print_tool_result 

10 

11if TYPE_CHECKING: 

12 from collections.abc import Callable 

13 

14 

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. 

23 

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 

30 

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 ) 

38 

39 texts = [t for t, _ in console_output] 

40 assert_that(texts).contains("Some lint output") 

41 

42 

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. 

51 

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 

58 

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 ) 

66 

67 assert_that(success_calls).contains("✓ No issues found.") 

68 

69 

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. 

78 

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 

85 

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 ) 

93 

94 assert_that(console_output).is_not_empty() 

95 last_text, _ = console_output[-1] 

96 assert_that(last_text).is_equal_to("")