|
@@ -1,13 +1,14 @@
|
|
|
from __future__ import absolute_import
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
+import pytest
|
|
|
+
|
|
|
from compose.config.errors import DependencyError
|
|
|
from compose.config.sort_services import sort_service_dicts
|
|
|
from compose.config.types import VolumeFromSpec
|
|
|
-from tests import unittest
|
|
|
|
|
|
|
|
|
-class SortServiceTest(unittest.TestCase):
|
|
|
+class TestSortService(object):
|
|
|
def test_sort_service_dicts_1(self):
|
|
|
services = [
|
|
|
{
|
|
@@ -23,10 +24,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 3)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'grunt')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'redis')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'web')
|
|
|
+ assert len(sorted_services) == 3
|
|
|
+ assert sorted_services[0]['name'] == 'grunt'
|
|
|
+ assert sorted_services[1]['name'] == 'redis'
|
|
|
+ assert sorted_services[2]['name'] == 'web'
|
|
|
|
|
|
def test_sort_service_dicts_2(self):
|
|
|
services = [
|
|
@@ -44,10 +45,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 3)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'redis')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'postgres')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'web')
|
|
|
+ assert len(sorted_services) == 3
|
|
|
+ assert sorted_services[0]['name'] == 'redis'
|
|
|
+ assert sorted_services[1]['name'] == 'postgres'
|
|
|
+ assert sorted_services[2]['name'] == 'web'
|
|
|
|
|
|
def test_sort_service_dicts_3(self):
|
|
|
services = [
|
|
@@ -65,10 +66,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 3)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'child')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'parent')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'grandparent')
|
|
|
+ assert len(sorted_services) == 3
|
|
|
+ assert sorted_services[0]['name'] == 'child'
|
|
|
+ assert sorted_services[1]['name'] == 'parent'
|
|
|
+ assert sorted_services[2]['name'] == 'grandparent'
|
|
|
|
|
|
def test_sort_service_dicts_4(self):
|
|
|
services = [
|
|
@@ -86,10 +87,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 3)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'child')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'parent')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'grandparent')
|
|
|
+ assert len(sorted_services) == 3
|
|
|
+ assert sorted_services[0]['name'] == 'child'
|
|
|
+ assert sorted_services[1]['name'] == 'parent'
|
|
|
+ assert sorted_services[2]['name'] == 'grandparent'
|
|
|
|
|
|
def test_sort_service_dicts_5(self):
|
|
|
services = [
|
|
@@ -107,10 +108,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 3)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'child')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'parent')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'grandparent')
|
|
|
+ assert len(sorted_services) == 3
|
|
|
+ assert sorted_services[0]['name'] == 'child'
|
|
|
+ assert sorted_services[1]['name'] == 'parent'
|
|
|
+ assert sorted_services[2]['name'] == 'grandparent'
|
|
|
|
|
|
def test_sort_service_dicts_6(self):
|
|
|
services = [
|
|
@@ -128,10 +129,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 3)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'child')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'parent')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'grandparent')
|
|
|
+ assert len(sorted_services) == 3
|
|
|
+ assert sorted_services[0]['name'] == 'child'
|
|
|
+ assert sorted_services[1]['name'] == 'parent'
|
|
|
+ assert sorted_services[2]['name'] == 'grandparent'
|
|
|
|
|
|
def test_sort_service_dicts_7(self):
|
|
|
services = [
|
|
@@ -153,11 +154,11 @@ class SortServiceTest(unittest.TestCase):
|
|
|
]
|
|
|
|
|
|
sorted_services = sort_service_dicts(services)
|
|
|
- self.assertEqual(len(sorted_services), 4)
|
|
|
- self.assertEqual(sorted_services[0]['name'], 'one')
|
|
|
- self.assertEqual(sorted_services[1]['name'], 'two')
|
|
|
- self.assertEqual(sorted_services[2]['name'], 'three')
|
|
|
- self.assertEqual(sorted_services[3]['name'], 'four')
|
|
|
+ assert len(sorted_services) == 4
|
|
|
+ assert sorted_services[0]['name'] == 'one'
|
|
|
+ assert sorted_services[1]['name'] == 'two'
|
|
|
+ assert sorted_services[2]['name'] == 'three'
|
|
|
+ assert sorted_services[3]['name'] == 'four'
|
|
|
|
|
|
def test_sort_service_dicts_circular_imports(self):
|
|
|
services = [
|
|
@@ -171,13 +172,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
},
|
|
|
]
|
|
|
|
|
|
- try:
|
|
|
+ with pytest.raises(DependencyError) as exc:
|
|
|
sort_service_dicts(services)
|
|
|
- except DependencyError as e:
|
|
|
- self.assertIn('redis', e.msg)
|
|
|
- self.assertIn('web', e.msg)
|
|
|
- else:
|
|
|
- self.fail('Should have thrown an DependencyError')
|
|
|
+ assert 'redis' in exc.exconly()
|
|
|
+ assert 'web' in exc.exconly()
|
|
|
|
|
|
def test_sort_service_dicts_circular_imports_2(self):
|
|
|
services = [
|
|
@@ -194,13 +192,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
}
|
|
|
]
|
|
|
|
|
|
- try:
|
|
|
+ with pytest.raises(DependencyError) as exc:
|
|
|
sort_service_dicts(services)
|
|
|
- except DependencyError as e:
|
|
|
- self.assertIn('redis', e.msg)
|
|
|
- self.assertIn('web', e.msg)
|
|
|
- else:
|
|
|
- self.fail('Should have thrown an DependencyError')
|
|
|
+ assert 'redis' in exc.exconly()
|
|
|
+ assert 'web' in exc.exconly()
|
|
|
|
|
|
def test_sort_service_dicts_circular_imports_3(self):
|
|
|
services = [
|
|
@@ -218,13 +213,10 @@ class SortServiceTest(unittest.TestCase):
|
|
|
}
|
|
|
]
|
|
|
|
|
|
- try:
|
|
|
+ with pytest.raises(DependencyError) as exc:
|
|
|
sort_service_dicts(services)
|
|
|
- except DependencyError as e:
|
|
|
- self.assertIn('a', e.msg)
|
|
|
- self.assertIn('b', e.msg)
|
|
|
- else:
|
|
|
- self.fail('Should have thrown an DependencyError')
|
|
|
+ assert 'a' in exc.exconly()
|
|
|
+ assert 'b' in exc.exconly()
|
|
|
|
|
|
def test_sort_service_dicts_self_imports(self):
|
|
|
services = [
|
|
@@ -234,9 +226,18 @@ class SortServiceTest(unittest.TestCase):
|
|
|
},
|
|
|
]
|
|
|
|
|
|
- try:
|
|
|
+ with pytest.raises(DependencyError) as exc:
|
|
|
+ sort_service_dicts(services)
|
|
|
+ assert 'web' in exc.exconly()
|
|
|
+
|
|
|
+ def test_sort_service_dicts_depends_on_self(self):
|
|
|
+ services = [
|
|
|
+ {
|
|
|
+ 'depends_on': ['web'],
|
|
|
+ 'name': 'web'
|
|
|
+ },
|
|
|
+ ]
|
|
|
+
|
|
|
+ with pytest.raises(DependencyError) as exc:
|
|
|
sort_service_dicts(services)
|
|
|
- except DependencyError as e:
|
|
|
- self.assertIn('web', e.msg)
|
|
|
- else:
|
|
|
- self.fail('Should have thrown an DependencyError')
|
|
|
+ assert 'A service can not depend on itself: web' in exc.exconly()
|