@@ -117,17 +117,27 @@ def str_to_list(arg):
117117@attr .s (frozen = True )
118118class DockerComposeExecutor :
119119
120+ _compose_command = attr .ib ()
120121 _compose_files = attr .ib (converter = str_to_list )
121122 _compose_project_name = attr .ib ()
122123
123124 def execute (self , subcommand ):
124- command = "docker-compose"
125+ command = self . _compose_command
125126 for compose_file in self ._compose_files :
126127 command += ' -f "{}"' .format (compose_file )
127128 command += ' -p "{}" {}' .format (self ._compose_project_name , subcommand )
128129 return execute (command )
129130
130131
132+ @pytest .fixture (scope = "session" )
133+ def docker_compose_command ():
134+ """Docker Compose command to use, it could be either `docker-compose`
135+ for Docker Compose v1 or `docker compose` for Docker Compose
136+ v2."""
137+
138+ return "docker-compose"
139+
140+
131141@pytest .fixture (scope = "session" )
132142def docker_compose_file (pytestconfig ):
133143 """Get an absolute path to the `docker-compose.yml` file. Override this
@@ -174,10 +184,14 @@ def docker_setup():
174184
175185@contextlib .contextmanager
176186def get_docker_services (
177- docker_compose_file , docker_compose_project_name , docker_setup , docker_cleanup
187+ docker_compose_command ,
188+ docker_compose_file ,
189+ docker_compose_project_name ,
190+ docker_setup ,
191+ docker_cleanup ,
178192):
179193 docker_compose = DockerComposeExecutor (
180- docker_compose_file , docker_compose_project_name
194+ docker_compose_command , docker_compose_file , docker_compose_project_name
181195 )
182196
183197 # setup containers.
@@ -195,6 +209,7 @@ def get_docker_services(
195209
196210@pytest .fixture (scope = "session" )
197211def docker_services (
212+ docker_compose_command ,
198213 docker_compose_file ,
199214 docker_compose_project_name ,
200215 docker_setup ,
@@ -204,6 +219,10 @@ def docker_services(
204219 After test are finished, shutdown all services (`docker-compose down`)."""
205220
206221 with get_docker_services (
207- docker_compose_file , docker_compose_project_name , docker_setup , docker_cleanup
222+ docker_compose_command ,
223+ docker_compose_file ,
224+ docker_compose_project_name ,
225+ docker_setup ,
226+ docker_cleanup ,
208227 ) as docker_service :
209228 yield docker_service
0 commit comments