Skip to content

Commit 05c1240

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 5e711fd commit 05c1240

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

tests/functional/conftest.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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")
188204
def 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")
276295
def 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")
292316
def 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")
363399
def 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")
431470
def issue(project):

0 commit comments

Comments
 (0)