diff options
author | Guillermo Arribas <garribas@gmail.com> | 2017-10-06 19:12:59 -0300 |
---|---|---|
committer | Joffrey F <f.joffrey@gmail.com> | 2017-10-17 17:20:00 -0700 |
commit | 0d0da0760c3422e6164ec39c3e8edd77ac6d28d3 (patch) | |
tree | 8fab3d4f3d539f691286ddb4f6e3ac4c8aa405f0 | |
parent | c4a8cb30ffba475169b01b8d0b653dc07fa5ab60 (diff) |
Build labels option: array form produces unmarshal error (fixes #5183)
Signed-off-by: Guillermo Arribas <garribas@gmail.com>
-rw-r--r-- | compose/service.py | 3 | ||||
-rw-r--r-- | tests/integration/service_test.py | 19 | ||||
-rw-r--r-- | tests/unit/service_test.py | 4 |
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, |