浏览代码

0 is a valid value for a published port

Signed-off-by: Joffrey F <[email protected]>
Joffrey F 8 年之前
父节点
当前提交
8102f02cfc
共有 2 个文件被更改,包括 7 次插入1 次删除
  1. 1 1
      compose/config/types.py
  2. 6 0
      tests/unit/config/types_test.py

+ 1 - 1
compose/config/types.py

@@ -343,7 +343,7 @@ class ServicePort(namedtuple('_ServicePort', 'target published protocol mode ext
 def normalize_port_dict(port):
 def normalize_port_dict(port):
     return '{external_ip}{has_ext_ip}{published}{is_pub}{target}/{protocol}'.format(
     return '{external_ip}{has_ext_ip}{published}{is_pub}{target}/{protocol}'.format(
         published=port.get('published', ''),
         published=port.get('published', ''),
-        is_pub=(':' if port.get('published') or port.get('external_ip') else ''),
+        is_pub=(':' if port.get('published') is not None or port.get('external_ip') else ''),
         target=port.get('target'),
         target=port.get('target'),
         protocol=port.get('protocol', 'tcp'),
         protocol=port.get('protocol', 'tcp'),
         external_ip=port.get('external_ip', ''),
         external_ip=port.get('external_ip', ''),

+ 6 - 0
tests/unit/config/types_test.py

@@ -81,6 +81,12 @@ class TestServicePort(object):
             'external_ip': '1.1.1.1',
             'external_ip': '1.1.1.1',
         }
         }
 
 
+    def test_repr_published_port_0(self):
+        port_def = '0:4000'
+        ports = ServicePort.parse(port_def)
+        assert len(ports) == 1
+        assert ports[0].legacy_repr() == port_def + '/tcp'
+
     def test_parse_port_range(self):
     def test_parse_port_range(self):
         ports = ServicePort.parse('25000-25001:4000-4001')
         ports = ServicePort.parse('25000-25001:4000-4001')
         assert len(ports) == 2
         assert len(ports) == 2