1111
1212
1313def run_checks (runner , httpserver , results , * options , color = False ):
14- with patch ("scim2_cli.test.check_server " , side_effect = [results ]):
14+ with patch ("scim2_cli.test.iter_check_server " , side_effect = [results ]):
1515 return runner .invoke (
1616 cli ,
1717 ["--url" , httpserver .url_for ("/" ), "test" , * options ],
@@ -112,12 +112,12 @@ def test_response_checks_options(runner, httpserver, options, expected):
112112 """Test that the response check options are applied on the client."""
113113 checked = {}
114114
115- def check_server (client , seed ):
115+ def iter_check_server (client , seed ):
116116 checked ["status_codes" ] = client .check_response_status_codes
117117 checked ["content_type" ] = client .check_response_content_type
118118 return []
119119
120- with patch ("scim2_cli.test.check_server " , check_server ):
120+ with patch ("scim2_cli.test.iter_check_server " , iter_check_server ):
121121 result = runner .invoke (
122122 cli ,
123123 ["--url" , httpserver .url_for ("/" ), "test" , * options ],
@@ -218,28 +218,32 @@ def test_every_outcome_has_a_color():
218218
219219def test_seed_is_sent_and_printed (runner , httpserver ):
220220 """The seed passed with --seed generates the values, and is printed at the end."""
221- with patch ("scim2_cli.test.check_server" , return_value = []) as check_server :
221+ with patch (
222+ "scim2_cli.test.iter_check_server" , return_value = []
223+ ) as iter_check_server :
222224 result = runner .invoke (
223225 cli ,
224226 ["--url" , httpserver .url_for ("/" ), "test" , "--seed" , "1234" ],
225227 catch_exceptions = False ,
226228 )
227229
228- assert check_server .call_args .kwargs ["seed" ] == 1234
230+ assert iter_check_server .call_args .kwargs ["seed" ] == 1234
229231 assert result .output .splitlines ()[- 1 ] == "no checks ran (seed 1234)"
230232
231233
232234def test_each_run_has_its_own_seed (runner , httpserver ):
233235 """Without --seed, each run draws a new seed and prints it."""
234236 seeds = []
235237 for _ in range (2 ):
236- with patch ("scim2_cli.test.check_server" , return_value = []) as check_server :
238+ with patch (
239+ "scim2_cli.test.iter_check_server" , return_value = []
240+ ) as iter_check_server :
237241 result = runner .invoke (
238242 cli ,
239243 ["--url" , httpserver .url_for ("/" ), "test" ],
240244 catch_exceptions = False ,
241245 )
242- seed = check_server .call_args .kwargs ["seed" ]
246+ seed = iter_check_server .call_args .kwargs ["seed" ]
243247 assert result .output .splitlines ()[- 1 ] == f"no checks ran (seed { seed } )"
244248 seeds .append (seed )
245249
@@ -248,24 +252,24 @@ def test_each_run_has_its_own_seed(runner, httpserver):
248252
249253def test_seed_must_be_an_integer (runner , httpserver ):
250254 """A seed that is not an integer is a usage error."""
251- with patch ("scim2_cli.test.check_server " ) as check_server :
255+ with patch ("scim2_cli.test.iter_check_server " ) as iter_check_server :
252256 result = runner .invoke (
253257 cli , ["--url" , httpserver .url_for ("/" ), "test" , "--seed" , "abc" ]
254258 )
255259
256260 assert result .exit_code == 2
257261 assert "'abc' is not a valid integer" in result .output
258- check_server .assert_not_called ()
262+ iter_check_server .assert_not_called ()
259263
260264
261265def test_header_is_printed_before_the_checks (runner , httpserver ):
262266 """The header is printed before the checks run."""
263267
264- def check_server (client , seed ):
268+ def iter_check_server (client , seed ):
265269 click .echo ("checks running" )
266270 return []
267271
268- with patch ("scim2_cli.test.check_server " , check_server ):
272+ with patch ("scim2_cli.test.iter_check_server " , iter_check_server ):
269273 result = runner .invoke (
270274 cli , ["--url" , httpserver .url_for ("/" ), "test" ], catch_exceptions = False
271275 )
@@ -276,6 +280,26 @@ def check_server(client, seed):
276280 ]
277281
278282
283+ def test_results_are_printed_as_soon_as_they_arrive (runner , httpserver ):
284+ """Each result is printed before the next check runs."""
285+
286+ def iter_check_server (client , seed ):
287+ yield CheckResult (status = Status .ERROR , title = "test1" )
288+ click .echo ("next check running" )
289+ yield CheckResult (status = Status .ERROR , title = "test2" )
290+
291+ with patch ("scim2_cli.test.iter_check_server" , iter_check_server ):
292+ result = runner .invoke (
293+ cli , ["--url" , httpserver .url_for ("/" ), "test" ], catch_exceptions = False
294+ )
295+
296+ assert result .output .splitlines ()[1 :4 ] == [
297+ "ERROR test1" ,
298+ "next check running" ,
299+ "ERROR test2" ,
300+ ]
301+
302+
279303@pytest .mark .parametrize (
280304 ("statuses" , "expected" ),
281305 [
0 commit comments