@@ -184,6 +184,22 @@ def _wait(timeout=30, step=0.5):
184184 return _wait
185185
186186
187+ def wait_for_deleted (
188+ * , pg_manager : gitlab .base .RESTManager , object_id : int , description : str
189+ ) -> None :
190+ """Ensure the object specified can not be retrieved. If object still exists after
191+ timeout period, fail the test"""
192+ max_iterations = int (TIMEOUT / SLEEP_INTERVAL )
193+
194+ for _ in range (max_iterations ):
195+ try :
196+ pg_manager .get (object_id )
197+ except gitlab .exceptions .GitlabGetError :
198+ return
199+ time .sleep (SLEEP_INTERVAL )
200+ pytest .fail (f"{ description } { object_id } was not deleted" )
201+
202+
187203@pytest .fixture (scope = "session" )
188204def gitlab_config (check_is_alive , docker_ip , docker_services , temp_dir , fixture_dir ):
189205 config_file = temp_dir / "python-gitlab.cfg"
@@ -263,6 +279,7 @@ def group(gl):
263279 "path" : f"group-{ _id } " ,
264280 }
265281 group = gl .groups .create (data )
282+ group_id = group .id
266283
267284 yield group
268285
@@ -271,6 +288,8 @@ def group(gl):
271288 except gitlab .exceptions .GitlabDeleteError as e :
272289 print (f"Group already deleted: { e } " )
273290
291+ wait_for_deleted (pg_manager = gl .groups , object_id = group_id , description = "Group" )
292+
274293
275294@pytest .fixture (scope = "module" )
276295def project (gl ):
@@ -279,6 +298,7 @@ def project(gl):
279298 name = f"test-project-{ _id } "
280299
281300 project = gl .projects .create (name = name )
301+ project_id = project .id
282302
283303 yield project
284304
@@ -287,6 +307,10 @@ def project(gl):
287307 except gitlab .exceptions .GitlabDeleteError as e :
288308 print (f"Project already deleted: { e } " )
289309
310+ wait_for_deleted (
311+ pg_manager = gl .projects , object_id = project_id , description = "Project"
312+ )
313+
290314
291315@pytest .fixture (scope = "function" )
292316def merge_request (project , wait_for_sidekiq ):
@@ -358,6 +382,18 @@ def _merge_request(*, source_branch: str):
358382 # Ignore if branch was already deleted
359383 pass
360384
385+ for mr_iid , source_branch in to_delete :
386+ wait_for_deleted (
387+ pg_manager = project .mergerequests ,
388+ object_id = mr_iid ,
389+ description = "Project mergerequest" ,
390+ )
391+ wait_for_deleted (
392+ pg_manager = project .branches ,
393+ object_id = source_branch ,
394+ description = "Project branch" ,
395+ )
396+
361397
362398@pytest .fixture (scope = "module" )
363399def project_file (project ):
@@ -417,6 +453,7 @@ def user(gl):
417453 password = "fakepassword"
418454
419455 user = gl .users .create (email = email , username = username , name = name , password = password )
456+ user_id = user .id
420457
421458 yield user
422459
@@ -426,6 +463,8 @@ def user(gl):
426463 except gitlab .exceptions .GitlabDeleteError as e :
427464 print (f"User already deleted: { e } " )
428465
466+ wait_for_deleted (pg_manager = gl .users , object_id = user_id , description = "User" )
467+
429468
430469@pytest .fixture (scope = "module" )
431470def issue (project ):
0 commit comments