From 2da3cab2345b29766ac8514209bc12ebeb670a0a Mon Sep 17 00:00:00 2001 From: Oleg Ovcharuk Date: Sat, 25 Apr 2026 11:58:01 +0300 Subject: [PATCH] Fix dependabot paramiko --- test-requirements.txt | 4 ++-- tests/conftest.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/test-requirements.txt b/test-requirements.txt index 26dd6032..5e5f9b3f 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -14,12 +14,12 @@ importlib-metadata==4.6.1 iniconfig==1.1.1 jsonschema==3.2.0 packaging>=21.0 -paramiko==2.10.1 +paramiko>=3.4.0 pluggy>=1.0.0 protobuf>=3.13.0,<7.0.0 py>=1.11.0 pycparser==2.20 -PyNaCl==1.4.0 +PyNaCl>=1.5 pyparsing==2.4.7 pyrsistent==0.18.0 pytest>=7.0.0,<8.0.0 diff --git a/tests/conftest.py b/tests/conftest.py index 368ca0e5..d14c4192 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,6 +3,7 @@ import docker import pytest +from pytest_docker.plugin import DockerComposeExecutor, Services, containers_scope import ydb from ydb import issues @@ -62,6 +63,48 @@ def docker_cleanup(): return ["down -v --remove-orphans"] +def _cleanup_docker_project(project_name): + docker_client = _docker_client() + project_filter = {"label": f"com.docker.compose.project={project_name}"} + + for container in docker_client.containers.list(all=True, filters=project_filter): + container.remove(force=True, v=True) + + for network in docker_client.networks.list(filters=project_filter): + network.remove() + + for volume in docker_client.volumes.list(filters=project_filter): + volume.remove(force=True) + + +@pytest.fixture(scope=containers_scope) +def docker_services( + docker_compose_command, + docker_compose_file, + docker_compose_project_name, + docker_setup, + docker_cleanup, +): + """Start compose services and clean them up without forking during teardown.""" + docker_compose = DockerComposeExecutor( + docker_compose_command, + docker_compose_file, + docker_compose_project_name, + ) + + if docker_setup: + if isinstance(docker_setup, str): + docker_setup = [docker_setup] + for command in docker_setup: + docker_compose.execute(command) + + try: + yield Services(docker_compose) + finally: + if docker_cleanup: + _cleanup_docker_project(docker_compose_project_name) + + class DockerProject: """Compatibility wrapper for pytest-docker-compose docker_project fixture.