Fix crash when stat'ing objects with non-ascii names
This patch fixes a crash and stack trace in stat when an object name contains non-ascii characters. Change-Id: Ib6dc686771e593243de56cafc100b17e51d9d9d5 Closes-Bug: 1411665
This commit is contained in:
parent
06c73c6020
commit
cac21e3cff
@ -84,13 +84,11 @@ class OutputManager(object):
|
|||||||
self.print_pool.submit(self._print, msg)
|
self.print_pool.submit(self._print, msg)
|
||||||
|
|
||||||
def print_items(self, items, offset=DEFAULT_OFFSET, skip_missing=False):
|
def print_items(self, items, offset=DEFAULT_OFFSET, skip_missing=False):
|
||||||
lines = []
|
|
||||||
template = '%%%ds: %%s' % offset
|
template = '%%%ds: %%s' % offset
|
||||||
for k, v in items:
|
for k, v in items:
|
||||||
if skip_missing and not v:
|
if skip_missing and not v:
|
||||||
continue
|
continue
|
||||||
lines.append((template % (k, v)).rstrip())
|
self.print_msg((template % (k, v)).rstrip())
|
||||||
self.print_msg('\n'.join(lines))
|
|
||||||
|
|
||||||
def error(self, msg, *fmt_args):
|
def error(self, msg, *fmt_args):
|
||||||
if fmt_args:
|
if fmt_args:
|
||||||
|
@ -205,6 +205,11 @@ class TestOutputManager(testtools.TestCase):
|
|||||||
thread_manager.print_raw(
|
thread_manager.print_raw(
|
||||||
u'some raw bytes: \u062A\u062A'.encode('utf-8'))
|
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
|
# Now we have a thread for error printing and a thread for
|
||||||
# normal print messages
|
# normal print messages
|
||||||
self.assertEqual(starting_thread_count + 2,
|
self.assertEqual(starting_thread_count + 2,
|
||||||
@ -227,7 +232,10 @@ class TestOutputManager(testtools.TestCase):
|
|||||||
self.assertEqual(''.join([
|
self.assertEqual(''.join([
|
||||||
'one-argument\n',
|
'one-argument\n',
|
||||||
'one fish, 88 fish\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())
|
]), out_stream.getvalue())
|
||||||
|
|
||||||
first_item = u'I have 99 problems, but a \u062A\u062A is not one\n'
|
first_item = u'I have 99 problems, but a \u062A\u062A is not one\n'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user