Skip to content

Commit d684c74

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 a3eafab commit d684c74

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
@@ -158,6 +158,22 @@ def _wait(timeout=30, step=0.5):
158158
return _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")
162178
def gitlab_config(check_is_alive, docker_ip, docker_services, temp_dir, fixture_dir):
163179
config_file = temp_dir / "python-gitlab.cfg"
@@ -233,6 +249,7 @@ def group(gl):
233249
"path": f"group-{_id}",
234250
}
235251
group = gl.groups.create(data)
252+
group_id = group.id
236253

237254
yield group
238255

@@ -241,6 +258,8 @@ def group(gl):
241258
except gitlab.exceptions.GitlabDeleteError as e:
242259
print(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")
246265
def project(gl):
@@ -249,6 +268,7 @@ def project(gl):
249268
name = f"test-project-{_id}"
250269

251270
project = gl.projects.create(name=name)
271+
project_id = project.id
252272

253273
yield project
254274

@@ -257,6 +277,10 @@ def project(gl):
257277
except gitlab.exceptions.GitlabDeleteError as e:
258278
print(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")
262286
def merge_request(project, wait_for_sidekiq):
@@ -328,6 +352,18 @@ def _merge_request(*, source_branch: str):
328352
# Ignore if branch was already deleted
329353
pass
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")
333369
def project_file(project):
@@ -372,6 +408,7 @@ def user(gl):
372408
password = "fakepassword"
373409

374410
user = gl.users.create(email=email, username=username, name=name, password=password)
411+
user_id = user.id
375412

376413
yield user
377414

@@ -380,6 +417,8 @@ def user(gl):
380417
except gitlab.exceptions.GitlabDeleteError as e:
381418
print(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")
385424
def issue(project):

0 commit comments

Comments
 (0)