| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | from __future__ import unicode_literalsfrom .. import unittestfrom compose.service import Servicefrom compose.project import Project, ConfigurationErrorclass ProjectTest(unittest.TestCase):    def test_from_dict(self):        project = Project.from_dicts('composetest', [            {                'name': 'web',                'image': 'busybox:latest'            },            {                'name': 'db',                'image': 'busybox:latest'            },        ], None)        self.assertEqual(len(project.services), 2)        self.assertEqual(project.get_service('web').name, 'web')        self.assertEqual(project.get_service('web').options['image'], 'busybox:latest')        self.assertEqual(project.get_service('db').name, 'db')        self.assertEqual(project.get_service('db').options['image'], 'busybox:latest')    def test_from_dict_sorts_in_dependency_order(self):        project = Project.from_dicts('composetest', [            {                'name': 'web',                'image': 'busybox:latest',                'links': ['db'],            },            {                'name': 'db',                'image': 'busybox:latest',                'volumes_from': ['volume']            },            {                'name': 'volume',                'image': 'busybox:latest',                'volumes': ['/tmp'],            }        ], None)        self.assertEqual(project.services[0].name, 'volume')        self.assertEqual(project.services[1].name, 'db')        self.assertEqual(project.services[2].name, 'web')    def test_from_config(self):        project = Project.from_config('composetest', {            'web': {                'image': 'busybox:latest',            },            'db': {                'image': 'busybox:latest',            },        }, None)        self.assertEqual(len(project.services), 2)        self.assertEqual(project.get_service('web').name, 'web')        self.assertEqual(project.get_service('web').options['image'], 'busybox:latest')        self.assertEqual(project.get_service('db').name, 'db')        self.assertEqual(project.get_service('db').options['image'], 'busybox:latest')    def test_from_config_throws_error_when_not_dict(self):        with self.assertRaises(ConfigurationError):            project = Project.from_config('composetest', {                'web': 'busybox:latest',            }, None)    def test_get_service(self):        web = Service(            project='composetest',            name='web',            client=None,            image="busybox:latest",        )        project = Project('test', [web], None)        self.assertEqual(project.get_service('web'), web)    def test_get_services_returns_all_services_without_args(self):        web = Service(            project='composetest',            name='web',        )        console = Service(            project='composetest',            name='console',        )        project = Project('test', [web, console], None)        self.assertEqual(project.get_services(), [web, console])    def test_get_services_returns_listed_services_with_args(self):        web = Service(            project='composetest',            name='web',        )        console = Service(            project='composetest',            name='console',        )        project = Project('test', [web, console], None)        self.assertEqual(project.get_services(['console']), [console])    def test_get_services_with_include_links(self):        db = Service(            project='composetest',            name='db',        )        web = Service(            project='composetest',            name='web',            links=[(db, 'database')]        )        cache = Service(            project='composetest',            name='cache'        )        console = Service(            project='composetest',            name='console',            links=[(web, 'web')]        )        project = Project('test', [web, db, cache, console], None)        self.assertEqual(            project.get_services(['console'], include_links=True),            [db, web, console]        )    def test_get_services_removes_duplicates_following_links(self):        db = Service(            project='composetest',            name='db',        )        web = Service(            project='composetest',            name='web',            links=[(db, 'database')]        )        project = Project('test', [web, db], None)        self.assertEqual(            project.get_services(['web', 'db'], include_links=True),            [db, web]        )
 |