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