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 | |
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.
-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): |