Coverage for tests / unit / tools / ruff / check / test_no_issues.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Tests for execute_ruff_check with no issues found.""" 

2 

3from __future__ import annotations 

4 

5from unittest.mock import MagicMock, patch 

6 

7from assertpy import assert_that 

8 

9from lintro.tools.implementations.ruff.check import execute_ruff_check 

10 

11 

12def test_execute_ruff_check_no_issues_returns_success( 

13 mock_ruff_tool: MagicMock, 

14) -> None: 

15 """Return success when no lint issues are found. 

16 

17 Args: 

18 mock_ruff_tool: Mock RuffTool instance for testing. 

19 """ 

20 with ( 

21 patch( 

22 "lintro.tools.implementations.ruff.check.walk_files_with_excludes", 

23 return_value=["test.py"], 

24 ), 

25 patch( 

26 "lintro.tools.implementations.ruff.check.run_subprocess_with_timeout", 

27 return_value=(True, "[]"), 

28 ), 

29 patch( 

30 "lintro.tools.implementations.ruff.check.parse_ruff_output", 

31 return_value=[], 

32 ), 

33 ): 

34 result = execute_ruff_check(mock_ruff_tool, ["/test/project"]) 

35 

36 assert_that(result.success).is_true() 

37 assert_that(result.issues_count).is_equal_to(0) 

38 assert_that(result.name).is_equal_to("ruff") 

39 

40 

41def test_execute_ruff_check_no_issues_with_format_check( 

42 mock_ruff_tool: MagicMock, 

43) -> None: 

44 """Return success when no lint or format issues are found. 

45 

46 Args: 

47 mock_ruff_tool: Mock RuffTool instance for testing. 

48 """ 

49 mock_ruff_tool.options["format_check"] = True 

50 

51 with ( 

52 patch( 

53 "lintro.tools.implementations.ruff.check.walk_files_with_excludes", 

54 return_value=["test.py"], 

55 ), 

56 patch( 

57 "lintro.tools.implementations.ruff.check.run_subprocess_with_timeout", 

58 return_value=(True, ""), 

59 ), 

60 patch( 

61 "lintro.tools.implementations.ruff.check.parse_ruff_output", 

62 return_value=[], 

63 ), 

64 patch( 

65 "lintro.tools.implementations.ruff.check.parse_ruff_format_check_output", 

66 return_value=[], 

67 ), 

68 ): 

69 result = execute_ruff_check(mock_ruff_tool, ["/test/project"]) 

70 

71 assert_that(result.success).is_true() 

72 assert_that(result.issues_count).is_equal_to(0) 

73 

74 

75def test_execute_ruff_check_empty_paths_returns_no_files_message( 

76 mock_ruff_tool: MagicMock, 

77) -> None: 

78 """Return no files message when paths list is empty after validation. 

79 

80 Args: 

81 mock_ruff_tool: Mock RuffTool instance for testing. 

82 """ 

83 mock_ruff_tool._validate_paths.return_value = None 

84 

85 result = execute_ruff_check(mock_ruff_tool, []) 

86 

87 assert_that(result.success).is_true() 

88 assert_that(result.output).is_equal_to("No files to check.") 

89 assert_that(result.issues_count).is_equal_to(0) 

90 

91 

92def test_execute_ruff_check_no_python_files_found( 

93 mock_ruff_tool: MagicMock, 

94) -> None: 

95 """Return no Python files message when no matching files are discovered. 

96 

97 Args: 

98 mock_ruff_tool: Mock RuffTool instance for testing. 

99 """ 

100 with patch( 

101 "lintro.tools.implementations.ruff.check.walk_files_with_excludes", 

102 return_value=[], 

103 ): 

104 result = execute_ruff_check(mock_ruff_tool, ["/test/project"]) 

105 

106 assert_that(result.success).is_true() 

107 assert_that(result.output).is_equal_to("No Python files found to check.") 

108 assert_that(result.issues_count).is_equal_to(0)