Coverage for tests / unit / pytest / test_pytest_programmatic_api.py: 100%

103 statements  

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

1"""Unit tests for pytest programmatic API.""" 

2 

3from __future__ import annotations 

4 

5from unittest.mock import Mock, patch 

6 

7from assertpy import assert_that 

8 

9from lintro.cli_utils.commands.test import test 

10 

11 

12def test_test_function_with_default_options() -> None: 

13 """Test programmatic test function with explicit default options.""" 

14 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

15 mock_result = Mock() 

16 mock_result.exit_code = 0 

17 mock_invoke.return_value = mock_result 

18 test( 

19 paths=(), 

20 exclude=None, 

21 include_venv=False, 

22 output=None, 

23 output_format="grid", 

24 group_by="file", 

25 verbose=False, 

26 tool_options=None, 

27 ) 

28 assert_that(mock_invoke.called).is_true() 

29 

30 

31def test_test_function_with_paths() -> None: 

32 """Test programmatic test function with paths.""" 

33 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

34 mock_result = Mock() 

35 mock_result.exit_code = 0 

36 mock_invoke.return_value = mock_result 

37 test( 

38 paths=("tests/",), 

39 exclude=None, 

40 include_venv=False, 

41 output=None, 

42 output_format="grid", 

43 group_by="file", 

44 verbose=False, 

45 tool_options=None, 

46 ) 

47 call_args = mock_invoke.call_args 

48 assert_that(call_args[0][1]).contains("tests/") 

49 

50 

51def test_test_function_with_exclude() -> None: 

52 """Test programmatic test function with exclude patterns.""" 

53 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

54 mock_result = Mock() 

55 mock_result.exit_code = 0 

56 mock_invoke.return_value = mock_result 

57 test( 

58 paths=(), 

59 exclude="*.venv", 

60 include_venv=False, 

61 output=None, 

62 output_format="grid", 

63 group_by="file", 

64 verbose=False, 

65 tool_options=None, 

66 ) 

67 call_args = mock_invoke.call_args 

68 assert_that(call_args[0][1]).contains("--exclude") 

69 assert_that(call_args[0][1]).contains("*.venv") 

70 

71 

72def test_test_function_with_include_venv() -> None: 

73 """Test programmatic test function with include-venv.""" 

74 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

75 mock_result = Mock() 

76 mock_result.exit_code = 0 

77 mock_invoke.return_value = mock_result 

78 test( 

79 paths=(), 

80 exclude=None, 

81 include_venv=True, 

82 output=None, 

83 output_format="grid", 

84 group_by="file", 

85 verbose=False, 

86 tool_options=None, 

87 ) 

88 call_args = mock_invoke.call_args 

89 assert_that(call_args[0][1]).contains("--include-venv") 

90 

91 

92def test_test_function_with_output() -> None: 

93 """Test programmatic test function with output file.""" 

94 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

95 mock_result = Mock() 

96 mock_result.exit_code = 0 

97 mock_invoke.return_value = mock_result 

98 test( 

99 paths=(), 

100 exclude=None, 

101 include_venv=False, 

102 output="/tmp/output.txt", 

103 output_format="grid", 

104 group_by="file", 

105 verbose=False, 

106 tool_options=None, 

107 ) 

108 call_args = mock_invoke.call_args 

109 assert_that(call_args[0][1]).contains("--output") 

110 assert_that(call_args[0][1]).contains("/tmp/output.txt") 

111 

112 

113def test_test_function_with_output_format() -> None: 

114 """Test programmatic test function with output format.""" 

115 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

116 mock_result = Mock() 

117 mock_result.exit_code = 0 

118 mock_invoke.return_value = mock_result 

119 test( 

120 paths=(), 

121 exclude=None, 

122 include_venv=False, 

123 output=None, 

124 output_format="json", 

125 group_by="file", 

126 verbose=False, 

127 tool_options=None, 

128 ) 

129 call_args = mock_invoke.call_args 

130 assert_that(call_args[0][1]).contains("--output-format") 

131 assert_that(call_args[0][1]).contains("json") 

132 

133 

134def test_test_function_with_group_by() -> None: 

135 """Test programmatic test function with group-by.""" 

136 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

137 mock_result = Mock() 

138 mock_result.exit_code = 0 

139 mock_invoke.return_value = mock_result 

140 test( 

141 paths=(), 

142 exclude=None, 

143 include_venv=False, 

144 output=None, 

145 output_format="grid", 

146 group_by="code", 

147 verbose=False, 

148 tool_options=None, 

149 ) 

150 call_args = mock_invoke.call_args 

151 assert_that(call_args[0][1]).contains("--group-by") 

152 assert_that(call_args[0][1]).contains("code") 

153 

154 

155def test_test_function_with_verbose() -> None: 

156 """Test programmatic test function with verbose flag.""" 

157 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

158 mock_result = Mock() 

159 mock_result.exit_code = 0 

160 mock_invoke.return_value = mock_result 

161 test( 

162 paths=(), 

163 exclude=None, 

164 include_venv=False, 

165 output=None, 

166 output_format="grid", 

167 group_by="file", 

168 verbose=True, 

169 tool_options=None, 

170 ) 

171 call_args = mock_invoke.call_args 

172 assert_that(call_args[0][1]).contains("--verbose") 

173 

174 

175def test_test_function_with_raw_output() -> None: 

176 """Test programmatic test function with raw-output flag.""" 

177 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

178 mock_result = Mock() 

179 mock_result.exit_code = 0 

180 mock_invoke.return_value = mock_result 

181 test( 

182 paths=(), 

183 exclude=None, 

184 include_venv=False, 

185 output=None, 

186 output_format="grid", 

187 group_by="file", 

188 verbose=False, 

189 raw_output=True, 

190 tool_options=None, 

191 ) 

192 call_args = mock_invoke.call_args 

193 assert_that(call_args[0][1]).contains("--raw-output") 

194 

195 

196def test_test_function_with_tool_options() -> None: 

197 """Test programmatic test function with tool options.""" 

198 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

199 mock_result = Mock() 

200 mock_result.exit_code = 0 

201 mock_invoke.return_value = mock_result 

202 test( 

203 paths=(), 

204 exclude=None, 

205 include_venv=False, 

206 output=None, 

207 output_format="grid", 

208 group_by="file", 

209 verbose=False, 

210 tool_options="maxfail=5", 

211 ) 

212 call_args = mock_invoke.call_args 

213 assert_that(call_args[0][1]).contains("--tool-options") 

214 assert_that(call_args[0][1]).contains("maxfail=5") 

215 

216 

217def test_test_function_exit_code_success() -> None: 

218 """Test programmatic function exits with success code.""" 

219 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

220 mock_result = Mock() 

221 mock_result.exit_code = 0 

222 mock_invoke.return_value = mock_result 

223 # test() returns None on success, no assignment needed 

224 test( 

225 paths=(), 

226 exclude=None, 

227 include_venv=False, 

228 output=None, 

229 output_format="grid", 

230 group_by="file", 

231 verbose=False, 

232 tool_options=None, 

233 ) 

234 assert_that(mock_invoke.called).is_true() 

235 

236 

237def test_test_function_exit_code_failure() -> None: 

238 """Test programmatic function exits with failure code.""" 

239 with patch("lintro.cli_utils.commands.test.CliRunner.invoke") as mock_invoke: 

240 mock_result = Mock() 

241 mock_result.exit_code = 1 

242 mock_invoke.return_value = mock_result 

243 with patch("sys.exit") as mock_exit: 

244 test( 

245 paths=(), 

246 exclude=None, 

247 include_venv=False, 

248 output=None, 

249 output_format="grid", 

250 group_by="file", 

251 verbose=False, 

252 tool_options=None, 

253 ) 

254 mock_exit.assert_called_once_with(1)