diff --git a/compose/project.py b/compose/project.py index aa0e3e88e..3a0d886c1 100644 --- a/compose/project.py +++ b/compose/project.py @@ -288,6 +288,9 @@ class Project(object): def containers(self, service_names=None, stopped=False, one_off=False): if service_names: self.validate_service_names(service_names) + else: + service_names = self.service_names + containers = [ Container.from_ps(self.client, container) for container in self.client.containers( @@ -295,8 +298,6 @@ class Project(object): filters={'label': self.labels(one_off=one_off)})] def matches_service_names(container): - if not service_names: - return True return container.labels.get(LABEL_SERVICE) in service_names if not containers: diff --git a/tests/integration/project_test.py b/tests/integration/project_test.py index 471b4149d..195940423 100644 --- a/tests/integration/project_test.py +++ b/tests/integration/project_test.py @@ -35,6 +35,21 @@ class ProjectTest(DockerClientTestCase): [c.name for c in containers], ['composetest_web_1']) + def test_containers_with_extra_service(self): + web = self.create_service('web') + web_1 = web.create_container() + + db = self.create_service('db') + db_1 = db.create_container() + + self.create_service('extra').create_container() + + project = Project('composetest', [web, db], self.client) + self.assertEqual( + set(project.containers(stopped=True)), + set([web_1, db_1]), + ) + def test_volumes_from_service(self): service_dicts = build_service_dicts({ 'data': {