summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillermo Arribas <garribas@gmail.com>2017-10-06 19:12:59 -0300
committerJoffrey F <f.joffrey@gmail.com>2017-10-17 17:20:00 -0700
commit0d0da0760c3422e6164ec39c3e8edd77ac6d28d3 (patch)
tree8fab3d4f3d539f691286ddb4f6e3ac4c8aa405f0
parentc4a8cb30ffba475169b01b8d0b653dc07fa5ab60 (diff)
Build labels option: array form produces unmarshal error (fixes #5183)
Signed-off-by: Guillermo Arribas <garribas@gmail.com>
-rw-r--r--compose/service.py3
-rw-r--r--tests/integration/service_test.py19
-rw-r--r--tests/unit/service_test.py4
3 files changed, 22 insertions, 4 deletions
diff --git a/compose/service.py b/compose/service.py
index 1a18c665..e2f72aa5 100644
--- a/compose/service.py
+++ b/compose/service.py
@@ -23,6 +23,7 @@ from . import const
from . import progress_stream
from .config import DOCKER_CONFIG_KEYS
from .config import merge_environment
+from .config.config import parse_labels
from .config.errors import DependencyError
from .config.types import ServicePort
from .config.types import VolumeSpec
@@ -916,7 +917,7 @@ class Service(object):
nocache=no_cache,
dockerfile=build_opts.get('dockerfile', None),
cache_from=build_opts.get('cache_from', None),
- labels=build_opts.get('labels', None),
+ labels=parse_labels(build_opts.get('labels', None)),
buildargs=build_args,
network_mode=build_opts.get('network', None),
target=build_opts.get('target', None),
diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py
index 84b54fe4..a71bc407 100644
--- a/tests/integration/service_test.py
+++ b/tests/integration/service_test.py
@@ -761,7 +761,7 @@ class ServiceTest(DockerClientTestCase):
assert service.image()
assert "build_version=2" in service.image()['ContainerConfig']['Cmd']
- def test_build_with_build_labels(self):
+ def test_build_with_build_labels_dict(self):
base_dir = tempfile.mkdtemp()
self.addCleanup(shutil.rmtree, base_dir)
@@ -778,6 +778,23 @@ class ServiceTest(DockerClientTestCase):
assert service.image()
assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
+ def test_build_with_build_labels_list(self):
+ base_dir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, base_dir)
+
+ with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
+ f.write('FROM busybox\n')
+
+ service = self.create_service('buildlabels', build={
+ 'context': text_type(base_dir),
+ 'labels': ['com.docker.compose.test=true']
+ })
+ service.build()
+ self.addCleanup(self.client.remove_image, service.image_name)
+
+ assert service.image()
+ assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
+
@no_cluster('Container networks not on Swarm')
def test_build_with_network(self):
base_dir = tempfile.mkdtemp()
diff --git a/tests/unit/service_test.py b/tests/unit/service_test.py
index 7d61807b..5c5c2bf6 100644
--- a/tests/unit/service_test.py
+++ b/tests/unit/service_test.py
@@ -473,7 +473,7 @@ class ServiceTest(unittest.TestCase):
nocache=False,
rm=True,
buildargs={},
- labels=None,
+ labels={},
cache_from=None,
network_mode=None,
target=None,
@@ -514,7 +514,7 @@ class ServiceTest(unittest.TestCase):
nocache=False,
rm=True,
buildargs={},
- labels=None,
+ labels={},
cache_from=None,
network_mode=None,
target=None,