浏览代码

Default link alias which is just the service name

Closes #37.

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 11 年之前
父节点
当前提交
62a4d214e8
共有 2 个文件被更改,包括 44 次插入11 次删除
  1. 2 2
      fig/service.py
  2. 42 9
      tests/integration/service_test.py

+ 2 - 2
fig/service.py

@@ -282,12 +282,12 @@ class Service(object):
         links = []
         for service, link_name in self.links:
             for container in service.containers():
-                if link_name:
-                    links.append((container.name, link_name))
+                links.append((container.name, link_name or service.name))
                 links.append((container.name, container.name))
                 links.append((container.name, container.name_without_project))
         if link_to_self:
             for container in self.containers():
+                links.append((container.name, self.name))
                 links.append((container.name, container.name))
                 links.append((container.name, container.name_without_project))
         return links

+ 42 - 9
tests/integration/service_test.py

@@ -171,29 +171,62 @@ class ServiceTest(DockerClientTestCase):
     def test_start_container_creates_links(self):
         db = self.create_service('db')
         web = self.create_service('web', links=[(db, None)])
+
+        db.start_container()
         db.start_container()
         web.start_container()
-        self.assertIn('figtest_db_1', web.containers()[0].links())
-        self.assertIn('db_1', web.containers()[0].links())
+
+        self.assertEqual(
+            set(web.containers()[0].links()),
+            set([
+                'figtest_db_1', 'db_1',
+                'figtest_db_2', 'db_2',
+                'db',
+            ]),
+        )
 
     def test_start_container_creates_links_with_names(self):
         db = self.create_service('db')
         web = self.create_service('web', links=[(db, 'custom_link_name')])
+
+        db.start_container()
         db.start_container()
         web.start_container()
-        self.assertIn('custom_link_name', web.containers()[0].links())
+
+        self.assertEqual(
+            set(web.containers()[0].links()),
+            set([
+                'figtest_db_1', 'db_1',
+                'figtest_db_2', 'db_2',
+                'custom_link_name',
+            ]),
+        )
 
     def test_start_normal_container_does_not_create_links_to_its_own_service(self):
         db = self.create_service('db')
-        c1 = db.start_container()
-        c2 = db.start_container()
-        self.assertNotIn(c1.name, c2.links())
+
+        db.start_container()
+        db.start_container()
+
+        c = db.start_container()
+        self.assertEqual(set(c.links()), set([]))
 
     def test_start_one_off_container_creates_links_to_its_own_service(self):
         db = self.create_service('db')
-        c1 = db.start_container()
-        c2 = db.start_container(one_off=True)
-        self.assertIn(c1.name, c2.links())
+
+        db.start_container()
+        db.start_container()
+
+        c = db.start_container(one_off=True)
+
+        self.assertEqual(
+            set(c.links()),
+            set([
+                'figtest_db_1', 'db_1',
+                'figtest_db_2', 'db_2',
+                'db',
+            ]),
+        )
 
     def test_start_container_builds_images(self):
         service = Service(