summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn L. Villalovos <john@sodarock.com>2022-01-03 23:06:06 -0800
committerJohn L. Villalovos <john@sodarock.com>2022-01-03 23:06:06 -0800
commitb0b137a8de2e7b99b3d4604e04305ad4ba318026 (patch)
tree5a546afa7e06488405761db9405b3127102b9e3b
parentc6d7e9aaddda2f39262b695bb98ea4d90575fcce (diff)
downloadgitlab-jlvillal/sidekiq.tar.gz
chore: fixtures: after delete() wait to verify deletedjlvillal/sidekiq
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.
-rw-r--r--tests/functional/conftest.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py
index 7c4e584..a6d6d1c 100644
--- a/tests/functional/conftest.py
+++ b/tests/functional/conftest.py
@@ -158,6 +158,22 @@ def wait_for_sidekiq(gl):
return _wait
+def wait_for_deleted(
+ *, pg_manager: gitlab.base.RESTManager, object_id: int, description: str
+) -> None:
+ """Ensure the object specified can not be retrieved. If object still exists after
+ timeout period, fail the test"""
+ max_iterations = int(TIMEOUT / SLEEP_INTERVAL)
+
+ for _ in range(max_iterations):
+ try:
+ pg_manager.get(object_id)
+ except gitlab.exceptions.GitlabGetError:
+ return
+ time.sleep(SLEEP_INTERVAL)
+ pytest.fail(f"{description} {object_id} was not deleted")
+
+
@pytest.fixture(scope="session")
def gitlab_config(check_is_alive, docker_ip, docker_services, temp_dir, fixture_dir):
config_file = temp_dir / "python-gitlab.cfg"
@@ -233,6 +249,7 @@ def group(gl):
"path": f"group-{_id}",
}
group = gl.groups.create(data)
+ group_id = group.id
yield group
@@ -241,6 +258,8 @@ def group(gl):
except gitlab.exceptions.GitlabDeleteError as e:
print(f"Group already deleted: {e}")
+ wait_for_deleted(pg_manager=gl.groups, object_id=group_id, description="Group")
+
@pytest.fixture(scope="module")
def project(gl):
@@ -249,6 +268,7 @@ def project(gl):
name = f"test-project-{_id}"
project = gl.projects.create(name=name)
+ project_id = project.id
yield project
@@ -257,6 +277,10 @@ def project(gl):
except gitlab.exceptions.GitlabDeleteError as e:
print(f"Project already deleted: {e}")
+ wait_for_deleted(
+ pg_manager=gl.projects, object_id=project_id, description="Project"
+ )
+
@pytest.fixture(scope="function")
def merge_request(project, wait_for_sidekiq):
@@ -328,6 +352,18 @@ def merge_request(project, wait_for_sidekiq):
# Ignore if branch was already deleted
pass
+ for mr_iid, source_branch in to_delete:
+ wait_for_deleted(
+ pg_manager=project.mergerequests,
+ object_id=mr_iid,
+ description="Project mergerequest",
+ )
+ wait_for_deleted(
+ pg_manager=project.branches,
+ object_id=source_branch,
+ description="Project branch",
+ )
+
@pytest.fixture(scope="module")
def project_file(project):
@@ -372,6 +408,7 @@ def user(gl):
password = "fakepassword"
user = gl.users.create(email=email, username=username, name=name, password=password)
+ user_id = user.id
yield user
@@ -380,6 +417,8 @@ def user(gl):
except gitlab.exceptions.GitlabDeleteError as e:
print(f"User already deleted: {e}")
+ wait_for_deleted(pg_manager=gl.users, object_id=user_id, description="User")
+
@pytest.fixture(scope="module")
def issue(project):