From b80d84e689783ef92fa666acfbeb13dfd26cd861 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Mon, 27 Feb 2023 13:56:18 +0200 Subject: [PATCH] testing: fixtures: fix docker regression --- dvc/testing/fixtures.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dvc/testing/fixtures.py b/dvc/testing/fixtures.py index ad6589193..2da277074 100644 --- a/dvc/testing/fixtures.py +++ b/dvc/testing/fixtures.py @@ -219,7 +219,12 @@ def docker_compose_project_name(): @pytest.fixture(scope="session") -def docker_services(request, tmp_path_factory): +def docker_services( + request, + tmp_path_factory, + docker_compose_file, + docker_compose_project_name, +): if os.environ.get("CI") and os.name == "nt": pytest.skip("disabled for Windows on CI") @@ -238,9 +243,16 @@ def docker_services(request, tmp_path_factory): from filelock import FileLock + # pylint: disable-next=import-error + from pytest_docker.plugin import DockerComposeExecutor, Services + + executor = DockerComposeExecutor(docker_compose_file, docker_compose_project_name) + # making sure we don't accidentally launch docker-compose in parallel, # as it might result in network conflicts. Inspired by: # https://pytest-xdist.readthedocs.io/en/stable/how-to.html#making-session-scoped-fixtures-execute-only-once root = tmp_path_factory.getbasetemp().parent with FileLock(os.fspath(root / "docker-compose.lock")): yield request.getfixturevalue("docker_services") + + return Services(executor)