@@ -158,6 +158,22 @@ def _wait(timeout=30, step=0.5):
158158return _wait
159159
160160
161+ def wait_for_deleted (
162+ * ,pg_manager :gitlab .base .RESTManager ,object_id :int ,description :str
163+ )-> None :
164+ """Ensure the object specified can not be retrieved. If object still exists after
165+ timeout period, fail the test"""
166+ max_iterations = int (TIMEOUT / SLEEP_INTERVAL )
167+
168+ for _ in range (max_iterations ):
169+ try :
170+ pg_manager .get (object_id )
171+ except gitlab .exceptions .GitlabGetError :
172+ return
173+ time .sleep (SLEEP_INTERVAL )
174+ pytest .fail (f"{ description } { object_id } was not deleted" )
175+
176+
161177@pytest .fixture (scope = "session" )
162178def gitlab_config (check_is_alive ,docker_ip ,docker_services ,temp_dir ,fixture_dir ):
163179config_file = temp_dir / "python-gitlab.cfg"
@@ -233,6 +249,7 @@ def group(gl):
233249"path" :f"group-{ _id } " ,
234250 }
235251group = gl .groups .create (data )
252+ group_id = group .id
236253
237254yield group
238255
@@ -241,6 +258,8 @@ def group(gl):
241258except gitlab .exceptions .GitlabDeleteError as e :
242259print (f"Group already deleted:{ e } " )
243260
261+ wait_for_deleted (pg_manager = gl .groups ,object_id = group_id ,description = "Group" )
262+
244263
245264@pytest .fixture (scope = "module" )
246265def project (gl ):
@@ -249,6 +268,7 @@ def project(gl):
249268name = f"test-project-{ _id } "
250269
251270project = gl .projects .create (name = name )
271+ project_id = project .id
252272
253273yield project
254274
@@ -257,6 +277,10 @@ def project(gl):
257277except gitlab .exceptions .GitlabDeleteError as e :
258278print (f"Project already deleted:{ e } " )
259279
280+ wait_for_deleted (
281+ pg_manager = gl .projects ,object_id = project_id ,description = "Project"
282+ )
283+
260284
261285@pytest .fixture (scope = "function" )
262286def merge_request (project ,wait_for_sidekiq ):
@@ -328,6 +352,18 @@ def _merge_request(*, source_branch: str):
328352# Ignore if branch was already deleted
329353pass
330354
355+ for mr_iid ,source_branch in to_delete :
356+ wait_for_deleted (
357+ pg_manager = project .mergerequests ,
358+ object_id = mr_iid ,
359+ description = "Project mergerequest" ,
360+ )
361+ wait_for_deleted (
362+ pg_manager = project .branches ,
363+ object_id = source_branch ,
364+ description = "Project branch" ,
365+ )
366+
331367
332368@pytest .fixture (scope = "module" )
333369def project_file (project ):
@@ -372,6 +408,7 @@ def user(gl):
372408password = "fakepassword"
373409
374410user = gl .users .create (email = email ,username = username ,name = name ,password = password )
411+ user_id = user .id
375412
376413yield user
377414
@@ -380,6 +417,8 @@ def user(gl):
380417except gitlab .exceptions .GitlabDeleteError as e :
381418print (f"User already deleted:{ e } " )
382419
420+ wait_for_deleted (pg_manager = gl .users ,object_id = user_id ,description = "User" )
421+
383422
384423@pytest .fixture (scope = "module" )
385424def issue (project ):