diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py index 8ecbcdfde..38d245ff7 100644 --- a/tests/functional/conftest.py +++ b/tests/functional/conftest.py @@ -17,68 +17,37 @@ def fixture_dir(test_dir): return test_dir / "functional" / "fixtures" -def reset_gitlab(gl): - # previously tools/reset_gitlab.py +def reset_gitlab(gl: gitlab.Gitlab) -> None: + """Delete resources (such as projects, groups, users) that shouldn't + exist.""" for project in gl.projects.list(): - logging.info(f"Marking for deletion project: {project.path_with_namespace!r}") for deploy_token in project.deploytokens.list(): logging.info( - f"Marking for deletion token: {deploy_token.username!r} in " + f"Deleting deploy token: {deploy_token.username!r} in " f"project: {project.path_with_namespace!r}" ) - deploy_token.delete() - project.delete() + helpers.safe_delete(deploy_token) + logging.info(f"Deleting project: {project.path_with_namespace!r}") + helpers.safe_delete(project) for group in gl.groups.list(): - logging.info(f"Marking for deletion group: {group.full_path!r}") for deploy_token in group.deploytokens.list(): logging.info( - f"Marking for deletion token: {deploy_token.username!r} in " + f"Deleting deploy token: {deploy_token.username!r} in " f"group: {group.path_with_namespace!r}" ) - deploy_token.delete() - group.delete() + helpers.safe_delete(deploy_token) + logging.info(f"Deleting group: {group.full_path!r}") + helpers.safe_delete(group) for topic in gl.topics.list(): - topic.delete() + logging.info(f"Deleting topic: {topic.name!r}") + helpers.safe_delete(topic) for variable in gl.variables.list(): - logging.info(f"Marking for deletion variable: {variable.key!r}") - variable.delete() + logging.info(f"Deleting variable: {variable.key!r}") + helpers.safe_delete(variable) for user in gl.users.list(): if user.username != "root": - logging.info(f"Marking for deletion user: {user.username!r}") - user.delete(hard_delete=True) - - # Ensure everything has been reset - start_time = time.perf_counter() - - def wait_for_list_size( - rest_manager: gitlab.base.RESTManager, description: str, max_length: int = 0 - ) -> None: - """Wait for the list() length to be no greater than expected maximum or fail - test if timeout is exceeded""" - logging.info(f"Checking {description!r} has no more than {max_length} items") - for count in range(helpers.MAX_ITERATIONS): - items = rest_manager.list() - if len(items) <= max_length: - break - logging.info( - f"Iteration: {count} Waiting for {description!r} items to be deleted: " - f"{[x.name for x in items]}" - ) - time.sleep(helpers.SLEEP_INTERVAL) - - elapsed_time = time.perf_counter() - start_time - error_message = ( - f"More than {max_length} {description!r} items still remaining and timeout " - f"({elapsed_time}) exceeded: {[x.name for x in items]}" - ) - if len(items) > max_length: - logging.error(error_message) - assert len(items) <= max_length, error_message - - wait_for_list_size(rest_manager=gl.projects, description="projects") - wait_for_list_size(rest_manager=gl.groups, description="groups") - wait_for_list_size(rest_manager=gl.variables, description="variables") - wait_for_list_size(rest_manager=gl.users, description="users", max_length=1) + logging.info(f"Deleting user: {user.username!r}") + helpers.safe_delete(user, hard_delete=True) def set_token(container, fixture_dir):
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: