From 97da2cc6bb91e81cd4d620884d0f0a8006ed9b8f Mon Sep 17 00:00:00 2001 From: Joffrey F <joffrey@docker.com> Date: Fri, 12 Jan 2018 13:57:40 -0800 Subject: [PATCH] Add test for NoSuchService with unicode characters Signed-off-by: Joffrey F <joffrey@docker.com> --- compose/project.py | 5 ++++- tests/unit/project_test.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/compose/project.py b/compose/project.py index 1f5ae574d..8e1c6a14d 100644 --- a/compose/project.py +++ b/compose/project.py @@ -7,6 +7,7 @@ import operator from functools import reduce import enum +import six from docker.errors import APIError from . import parallel @@ -703,7 +704,9 @@ def warn_for_swarm_mode(client): class NoSuchService(Exception): def __init__(self, name): - self.name = name.decode('utf8') + if isinstance(name, six.binary_type): + name = name.decode('utf-8') + self.name = name self.msg = "No such service: %s" % self.name def __str__(self): diff --git a/tests/unit/project_test.py b/tests/unit/project_test.py index 1313fbe35..397287ad9 100644 --- a/tests/unit/project_test.py +++ b/tests/unit/project_test.py @@ -1,3 +1,4 @@ +# encoding: utf-8 from __future__ import absolute_import from __future__ import unicode_literals @@ -14,6 +15,7 @@ from compose.const import COMPOSEFILE_V1 as V1 from compose.const import COMPOSEFILE_V2_0 as V2_0 from compose.const import LABEL_SERVICE from compose.container import Container +from compose.project import NoSuchService from compose.project import Project from compose.service import ImageType from compose.service import Service @@ -562,3 +564,7 @@ class ProjectTest(unittest.TestCase): with mock.patch('compose.project.log') as fake_log: project.up() assert fake_log.warn.call_count == 0 + + def test_no_such_service_unicode(self): + assert NoSuchService('十六夜 咲夜'.encode('utf-8')).msg == 'No such service: 十六夜 咲夜' + assert NoSuchService('十六夜 咲夜').msg == 'No such service: 十六夜 咲夜'