Removes unicode 'u' response from "glance image-tag-update"

"glance image-tag-update" command returns unicoded response
for lists. Therefore it requires print_list method from util
class to handle such case. Added unicode_key_value_to_string()
method to remove extra 'u' from lists and dictionaries. This
fix is inspired from cinderclient's implementation.

Change-Id: I16a04e8d34f7629f72fe389456001ca1db9335ea
Closes-bug: #1534046
This commit is contained in:
Abijitha Nadagouda
2018-02-02 10:26:23 +05:30
parent 4ea9d2c493
commit 195add500b
2 changed files with 67 additions and 0 deletions
+36
View File
@@ -115,6 +115,42 @@ class TestUtils(testtools.TestCase):
''',
output_dict.getvalue())
def test_print_list_with_list_no_unicode(self):
class Struct(object):
def __init__(self, **entries):
self.__dict__.update(entries)
# test for removing 'u' from lists in print_list output
columns = ['ID', 'Tags']
images = [Struct(**{'id': 'b8e1c57e-907a-4239-aed8-0df8e54b8d2d',
'tags': [u'Name1', u'Tag_123', u'veeeery long']})]
saved_stdout = sys.stdout
try:
sys.stdout = output_list = six.StringIO()
utils.print_list(images, columns)
finally:
sys.stdout = saved_stdout
self.assertEqual('''\
+--------------------------------------+--------------------------------------+
| ID | Tags |
+--------------------------------------+--------------------------------------+
| b8e1c57e-907a-4239-aed8-0df8e54b8d2d | ['Name1', 'Tag_123', 'veeeery long'] |
+--------------------------------------+--------------------------------------+
''',
output_list.getvalue())
def test_unicode_key_value_to_string(self):
src = {u'key': u'\u70fd\u7231\u5a77'}
expected = {'key': '\xe7\x83\xbd\xe7\x88\xb1\xe5\xa9\xb7'}
if six.PY2:
self.assertEqual(expected, utils.unicode_key_value_to_string(src))
else:
# u'xxxx' in PY3 is str, we will not get extra 'u' from cli
# output in PY3
self.assertEqual(src, utils.unicode_key_value_to_string(src))
def test_schema_args_with_list_types(self):
# NOTE(flaper87): Regression for bug
# https://bugs.launchpad.net/python-glanceclient/+bug/1401032