#8215 closed (wontfix)
Tests raise UnicodeDecodeError instead of showing the test that failed
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Testing framework | Version: | dev |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
This problem bit me while trying to adjust the regressionstests for #6873. Instead of reporting that tests/regressiontests/forms/widgets.py, Line 641 failed it just threw this error:
vm3:/home/dev/django-trunk/tests# ./runtests.py --settings settings forms ====================================================================== ERROR: Doctest: regressiontests.forms.tests.__test__.widgets_tests ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/django/test/_doctest.py", line 2176, in runTest failures, tries = runner.run( File "/usr/lib/python2.4/site-packages/django/test/_doctest.py", line 1405, in run return self.__run(test, compileflags, out) File "/usr/lib/python2.4/site-packages/django/test/_doctest.py", line 1318, in __run self.report_failure(out, test, example, got) File "/usr/lib/python2.4/site-packages/django/test/_doctest.py", line 1185, in report_failure out(self._failure_header(test, example) + UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 240: ordinal not in range(128)
Maybe all these Unicode strings in the tests without a small u in front need changing?
I know the information in this ticket is not really exhaustive. Just let me know what would help :)
Change History (3)
comment:1 by , 16 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:2 by , 16 years ago
Thx for the explanation Malcolm.
Unfortunately, if you see a test that fails like this, the solution is to change the test to print out UTF-8 data (or similar) just whilst you are debugging.
You mean getting debug print to track where it's breaking? I wanted to do just that but had no idea how ... "print" doesn't work. Could you post a pointer so the next person running into this can look it up?
This is a known problem with Python's standard doctest.py file, which we use in Django. We don't modify that file so that it's easy to sync with upstream now and again. One day we might really go to town there to change things, but it's not something we're rushing to do.
For now, this is wontfix, just because it's a problem right across the board, not just with Django. Unfortunately, if you see a test that fails like this, the solution is to change the test to print out UTF-8 data (or similar) just whilst you are debugging. Annoying... absolutely! But it happens relatively rarely (since tests pass a lot more than they fail) and it's easy enough to work around.
(By the way, if you're wondering: it's got nothing to do with marking the strings as unicode strings, since they're already wrapped in a larger string (the docstring for the test).)