@@ -309,7 +309,7 @@ def test_cancelled(self):
309309
310310 self .assertTrue (job .cancelled ())
311311
312- def test_done (self ):
312+ def test_done_job_complete (self ):
313313 client = _make_client (project = self .PROJECT )
314314 resource = self ._make_resource (ended = True )
315315 job = self ._get_target_class ().from_api_repr (resource , client )
@@ -357,7 +357,7 @@ def test_done_w_timeout_and_longer_internal_api_timeout(self):
357357 call_args = fake_reload .call_args
358358 self .assertAlmostEqual (call_args .kwargs .get ("timeout" ), expected_timeout )
359359
360- def test_done_w_query_results_error_reload_ok (self ):
360+ def test_done_w_query_results_error_reload_ok_job_finished (self ):
361361 client = _make_client (project = self .PROJECT )
362362 bad_request_error = exceptions .BadRequest ("Error in query" )
363363 client ._get_query_results = mock .Mock (side_effect = bad_request_error )
@@ -378,6 +378,26 @@ def fake_reload(self, *args, **kwargs):
378378 assert is_done
379379 assert isinstance (job ._exception , exceptions .BadRequest )
380380
381+ def test_done_w_query_results_error_reload_ok_job_still_running (self ):
382+ client = _make_client (project = self .PROJECT )
383+ retry_error = exceptions .RetryError ("Too many retries" , cause = TimeoutError )
384+ client ._get_query_results = mock .Mock (side_effect = retry_error )
385+
386+ resource = self ._make_resource (ended = False )
387+ job = self ._get_target_class ().from_api_repr (resource , client )
388+ job ._exception = None
389+
390+ def fake_reload (self , * args , ** kwargs ):
391+ self ._properties ["status" ]["state" ] = "RUNNING"
392+
393+ fake_reload_method = types .MethodType (fake_reload , job )
394+
395+ with mock .patch .object (job , "reload" , new = fake_reload_method ):
396+ is_done = job .done ()
397+
398+ assert not is_done
399+ assert job ._exception is None
400+
381401 def test_done_w_query_results_error_reload_error (self ):
382402 client = _make_client (project = self .PROJECT )
383403 bad_request_error = exceptions .BadRequest ("Error in query" )
0 commit comments