summaryrefslogtreecommitdiff
path: root/tests/functional/conftest.py
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 /tests/functional/conftest.py
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.
Diffstat (limited to 'tests/functional/conftest.py')
-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):