diff options
| author | Claude Paroz <claude@2xlibre.net> | 2012-09-04 09:24:39 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2012-09-04 09:27:28 +0200 |
| commit | cc9b767fc60a8b0455a67f00ca23077b55e709bb (patch) | |
| tree | 6d01b0f806720932df168f4b66a3b3e2884a93db | |
| parent | 03ad7d3c2085fa252e7bf6a725fec1ed3d1e6a7c (diff) | |
Fixed #18902 -- Made force_bytes properly handle exception input
Thanks Aymeric Augustin for the report and the initial patch.
| -rw-r--r-- | django/utils/encoding.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/utils/encoding.py | 17 | ||||
| -rw-r--r-- | tests/regressiontests/utils/tests.py | 1 |
3 files changed, 19 insertions, 1 deletions
diff --git a/django/utils/encoding.py b/django/utils/encoding.py index 998cf4f3f7..3b284f3ed0 100644 --- a/django/utils/encoding.py +++ b/django/utils/encoding.py @@ -174,7 +174,7 @@ def force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'): # An Exception subclass containing non-ASCII data that doesn't # know how to print itself properly. We shouldn't raise a # further exception. - return ' '.join([force_bytes(arg, encoding, strings_only, + return b' '.join([force_bytes(arg, encoding, strings_only, errors) for arg in s]) return six.text_type(s).encode(encoding, errors) else: diff --git a/tests/regressiontests/utils/encoding.py b/tests/regressiontests/utils/encoding.py new file mode 100644 index 0000000000..d191845518 --- /dev/null +++ b/tests/regressiontests/utils/encoding.py @@ -0,0 +1,17 @@ +# -*- encoding: utf-8 -*- +from __future__ import unicode_literals + +from django.utils import unittest +from django.utils.encoding import force_bytes + + +class TestEncodingUtils(unittest.TestCase): + def test_force_bytes_exception(self): + """ + Test that force_bytes knows how to convert to bytes an exception + containing non-ASCII characters in its args. + """ + error_msg = "This is an exception, voilĂ " + exc = ValueError(error_msg) + result = force_bytes(exc) + self.assertEqual(result, error_msg.encode('utf-8')) diff --git a/tests/regressiontests/utils/tests.py b/tests/regressiontests/utils/tests.py index 08f5f760cc..f4fa75b177 100644 --- a/tests/regressiontests/utils/tests.py +++ b/tests/regressiontests/utils/tests.py @@ -13,6 +13,7 @@ from .dateformat import DateFormatTests from .dateparse import DateParseTests from .datetime_safe import DatetimeTests from .decorators import DecoratorFromMiddlewareTests +from .encoding import TestEncodingUtils from .feedgenerator import FeedgeneratorTest from .functional import FunctionalTestCase from .html import TestUtilsHtml |
