summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-02-25 13:10:56 +0000
committerGerrit Code Review <review@openstack.org>2015-02-25 13:10:56 +0000
commit771383145b02f2a4b3ec546e3727f9b90fed22a8 (patch)
tree8605849f16b0007e8d2cc958577719522ba7633b
parent731707f06da899fa8fb2d521e35f850a2e1652ab (diff)
parentcac21e3cff323d828b69b2280151b9c505bdaeda (diff)
downloadpython-swiftclient-771383145b02f2a4b3ec546e3727f9b90fed22a8.tar.gz
Merge "Fix crash when stat'ing objects with non-ascii names"
-rw-r--r--swiftclient/multithreading.py4
-rw-r--r--tests/unit/test_multithreading.py10
2 files changed, 10 insertions, 4 deletions
diff --git a/swiftclient/multithreading.py b/swiftclient/multithreading.py
index 7ae82fa..32d8ffa 100644
--- a/swiftclient/multithreading.py
+++ b/swiftclient/multithreading.py
@@ -84,13 +84,11 @@ class OutputManager(object):
self.print_pool.submit(self._print, msg)
def print_items(self, items, offset=DEFAULT_OFFSET, skip_missing=False):
- lines = []
template = '%%%ds: %%s' % offset
for k, v in items:
if skip_missing and not v:
continue
- lines.append((template % (k, v)).rstrip())
- self.print_msg('\n'.join(lines))
+ self.print_msg((template % (k, v)).rstrip())
def error(self, msg, *fmt_args):
if fmt_args:
diff --git a/tests/unit/test_multithreading.py b/tests/unit/test_multithreading.py
index 5f85b1c..6597793 100644
--- a/tests/unit/test_multithreading.py
+++ b/tests/unit/test_multithreading.py
@@ -205,6 +205,11 @@ class TestOutputManager(testtools.TestCase):
thread_manager.print_raw(
u'some raw bytes: \u062A\u062A'.encode('utf-8'))
+ thread_manager.print_items([
+ ('key', u'value'),
+ ('object', 'O\xcc\x88bject')
+ ])
+
# Now we have a thread for error printing and a thread for
# normal print messages
self.assertEqual(starting_thread_count + 2,
@@ -227,7 +232,10 @@ class TestOutputManager(testtools.TestCase):
self.assertEqual(''.join([
'one-argument\n',
'one fish, 88 fish\n',
- 'some\n', 'where\n', over_the, raw_bytes
+ 'some\n', 'where\n',
+ over_the, raw_bytes,
+ ' key: value\n',
+ ' object: O\xcc\x88bject\n'
]), out_stream.getvalue())
first_item = u'I have 99 problems, but a \u062A\u062A is not one\n'