diff options
author | John L. Villalovos <john@sodarock.com> | 2022-01-03 23:06:06 -0800 |
---|---|---|
committer | John L. Villalovos <john@sodarock.com> | 2022-01-03 23:06:06 -0800 |
commit | b0b137a8de2e7b99b3d4604e04305ad4ba318026 (patch) | |
tree | 5a546afa7e06488405761db9405b3127102b9e3b /tests/functional/conftest.py | |
parent | c6d7e9aaddda2f39262b695bb98ea4d90575fcce (diff) | |
download | gitlab-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.py | 39 |
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): |