testtools and non-ascii characters in the failing tests?
Alexander Belchenko
bialix at ukr.net
Fri May 21 16:56:10 BST 2010
Hi,
I'd like to know what is the recommended way to use testtools with
non-ascii messages in failing tests?
Here test I want to check:
def test_unicode_filename_path_encoding(self):
"""Test for bug #382699: unicode filenames on Windows should be
shown
in user encoding.
"""
self.requireFeature(tests.UnicodeFilenameFeature)
# The word 'test' in Russian
_russian_test = u'\u0422\u0435\u0441\u0442'
directory = _russian_test + u'/'
test_txt = _russian_test + u'.txt'
u1234 = u'\u1234'
tree = self.make_branch_and_tree('.')
self.build_tree_contents([
(test_txt, 'foo\n'),
(u1234, 'foo\n'),
(directory, None),
])
tree.add([test_txt, u1234, directory])
sio = StringIO()
show_diff_trees(tree.basis_tree(), tree, sio,
path_encoding='cp1251')
self.assertEqualDiff(subst_dates(sio.getvalue()), '''\
''')
WHile running it I've got traceback from testtools:
bzr: ERROR: exceptions.UnicodeDecodeError: 'ascii' codec can't decode
byte 0xd2 in position 425: ordinal not in range(128)
Traceback (most recent call last):
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\commands.py", line 853, in
exception_to_return_code
return the_callable(*args, **kwargs)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\commands.py", line 1055, in
run_bzr
ret = run(*run_argv)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\commands.py", line 661, in
run_argv_aliases
return self.run_direct(**all_cmd_args)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\commands.py", line 665, in
run_direct
return self._operation.run_simple(*args, **kwargs)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\cleanup.py", line 122, in
run_simple
self.cleanups, self.func, *args, **kwargs)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\cleanup.py", line 156, in
_do_with_cleanups
result = func(*args, **kwargs)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\builtins.py", line 3580, in run
result = selftest(**selftest_kwargs)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\tests\__init__.py", line 3399,
in selftest
result_decorators=result_decorators,
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\tests\__init__.py", line 2933,
in run_suite
result = runner.run(suite)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\tests\__init__.py", line 639,
in run
test.run(result)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\tests\__init__.py", line 3044,
in run
return super(CountingDecorator, self).run(result)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\tests\__init__.py", line 3033,
in run
test.run(result)
File "C:\work\Bazaar\bzr-2a\2.1\bzrlib\tests\__init__.py", line 3033,
in run
test.run(result)
File "C:\Python25\lib\site-packages\testtools\testcase.py", line 361,
in run
return self.__RunTest(self, self.exception_handlers).run(result)
File "C:\Python25\lib\site-packages\testtools\runtest.py", line 64,
in run
return self._run_one(actual_result)
File "C:\Python25\lib\site-packages\testtools\runtest.py", line 78,
in _run_one
return self._run_prepared_result(ExtendedToOriginalDecorator(result))
File "C:\Python25\lib\site-packages\testtools\runtest.py", line 89,
in _run_prepared_result
self._run_core()
File "C:\Python25\lib\site-packages\testtools\runtest.py", line 106,
in _run_core
self.case._run_test_method, self.result):
File "C:\Python25\lib\site-packages\testtools\runtest.py", line 140,
in _run_user
handler(self.case, self.result, e)
File "C:\Python25\lib\site-packages\testtools\testcase.py", line 341,
in _report_failure
result.addFailure(self, details=self.getDetails())
File "C:\Python25\lib\site-packages\testtools\testresult\real.py",
line 405, in addFailure
err = self._details_to_exc_info(details)
File "C:\Python25\lib\site-packages\testtools\testresult\real.py",
line 453, in _details_to_exc_info
_StringException(_details_to_str(details)), None)
File "C:\Python25\lib\site-packages\testtools\testresult\real.py",
line 536, in _details_to_str
chars.extend(content.iter_text())
File "C:\Python25\lib\site-packages\testtools\content.py", line 59,
in _iter_text
for bytes in self.iter_bytes():
File "C:\Python25\lib\site-packages\testtools\content.py", line 38,
in iter_bytes
return self._get_bytes()
File "C:\Python25\lib\site-packages\testtools\content.py", line 91,
in <lambda>
content_type, lambda: [value.encode("utf8")])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd2 in position
425: ordinal not in range(128)
bzr 2.1.1 on python 2.5.4 (Windows-XP-5.1.2600-SP3)
arguments: ['bzr', '--no-plugins', 'selftest', '-s', 'bt.test_diff',
'test_unicode_filename_path_encoding', '-v']
encoding: 'cp1251', fsenc: 'mbcs', lang: None
plugins:
*** Bazaar has encountered an internal error. This probably indicates a
bug in Bazaar. You can help us fix it by filing a bug report at
https://bugs.launchpad.net/bzr/+filebug
including this traceback and a description of the problem.
bzr: warning: some compiled extensions could not be loaded; see
<https://answers.launchpad.net/bzr/+faq/703>
And BTW, the test marked as OK (!)
Am I'm doing something wrong? Is it already fixed in trunk?
More information about the bazaar
mailing list