Skip to content

Commit 3633850

Browse files
chore: fixtures: after delete() wait to verify deleted
In our fixtures that create: - groups - project merge requests - projects - users They delete the created objects after use. Now wait to ensure the objects are deleted before continuing as having unexpected objects existing can impact some of our tests.
1 parent ca3b438 commit 3633850

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/functional/conftest.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,33 @@ def _wait(timeout=30, step=0.5):
191191
return _wait
192192

193193

194+
def wait_for_deleted(
195+
*,
196+
pg_manager: gitlab.base.RESTManager,
197+
object_id: int,
198+
description: str,
199+
hard_delete: bool = False,
200+
) -> None:
201+
"""Ensure the object specified can not be retrieved. If object still exists after
202+
timeout period, fail the test"""
203+
max_iterations = int(TIMEOUT / SLEEP_INTERVAL)
204+
205+
for _ in range(max_iterations):
206+
try:
207+
object = pg_manager.get(object_id)
208+
except gitlab.exceptions.GitlabGetError:
209+
return
210+
try:
211+
if hard_delete:
212+
object.delete(hard_delete=True)
213+
else:
214+
object.delete()
215+
except gitlab.exceptions.GitlabDeleteError:
216+
pass
217+
time.sleep(SLEEP_INTERVAL)
218+
pytest.fail(f"{description} {object_id} was not deleted")
219+
220+
194221
@pytest.fixture(scope="session")
195222
def gitlab_config(check_is_alive, docker_ip, docker_services, temp_dir, fixture_dir):
196223
config_file = temp_dir / "python-gitlab.cfg"
@@ -277,6 +304,7 @@ def group(gl):
277304
"path": f"group-{_id}",
278305
}
279306
group = gl.groups.create(data)
307+
group_id = group.id
280308

281309
yield group
282310

@@ -285,6 +313,8 @@ def group(gl):
285313
except gitlab.exceptions.GitlabDeleteError as e:
286314
print(f"Group already deleted: {e}")
287315

316+
wait_for_deleted(pg_manager=gl.groups, object_id=group_id, description="Group")
317+
288318

289319
@pytest.fixture(scope="module")
290320
def project(gl):
@@ -293,6 +323,7 @@ def project(gl):
293323
name = f"test-project-{_id}"
294324

295325
project = gl.projects.create(name=name)
326+
project_id = project.id
296327

297328
yield project
298329

@@ -301,6 +332,10 @@ def project(gl):
301332
except gitlab.exceptions.GitlabDeleteError as e:
302333
print(f"Project already deleted: {e}")
303334

335+
wait_for_deleted(
336+
pg_manager=gl.projects, object_id=project_id, description="Project"
337+
)
338+
304339

305340
@pytest.fixture(scope="function")
306341
def merge_request(project, wait_for_sidekiq):
@@ -372,6 +407,18 @@ def _merge_request(*, source_branch: str):
372407
# Ignore if branch was already deleted
373408
pass
374409

410+
for mr_iid, source_branch in to_delete:
411+
wait_for_deleted(
412+
pg_manager=project.mergerequests,
413+
object_id=mr_iid,
414+
description="Project mergerequest",
415+
)
416+
wait_for_deleted(
417+
pg_manager=project.branches,
418+
object_id=source_branch,
419+
description="Project branch",
420+
)
421+
375422

376423
@pytest.fixture(scope="module")
377424
def project_file(project):
@@ -431,6 +478,7 @@ def user(gl):
431478
password = "fakepassword"
432479

433480
user = gl.users.create(email=email, username=username, name=name, password=password)
481+
user_id = user.id
434482

435483
yield user
436484

@@ -440,6 +488,10 @@ def user(gl):
440488
except gitlab.exceptions.GitlabDeleteError as e:
441489
print(f"User already deleted: {e}")
442490

491+
wait_for_deleted(
492+
pg_manager=gl.users, object_id=user_id, description="User", hard_delete=True
493+
)
494+
443495

444496
@pytest.fixture(scope="module")
445497
def issue(project):

0 commit comments

Comments
 (0)