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: 十六夜 咲夜'