Fixed #18902 -- Made force_bytes properly handle exception input
Thanks Aymeric Augustin for the report and the initial patch.
This commit is contained in:
parent
03ad7d3c20
commit
cc9b767fc6
|
@ -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
|
# An Exception subclass containing non-ASCII data that doesn't
|
||||||
# know how to print itself properly. We shouldn't raise a
|
# know how to print itself properly. We shouldn't raise a
|
||||||
# further exception.
|
# further exception.
|
||||||
return ' '.join([force_bytes(arg, encoding, strings_only,
|
return b' '.join([force_bytes(arg, encoding, strings_only,
|
||||||
errors) for arg in s])
|
errors) for arg in s])
|
||||||
return six.text_type(s).encode(encoding, errors)
|
return six.text_type(s).encode(encoding, errors)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -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'))
|
|
@ -13,6 +13,7 @@ from .dateformat import DateFormatTests
|
||||||
from .dateparse import DateParseTests
|
from .dateparse import DateParseTests
|
||||||
from .datetime_safe import DatetimeTests
|
from .datetime_safe import DatetimeTests
|
||||||
from .decorators import DecoratorFromMiddlewareTests
|
from .decorators import DecoratorFromMiddlewareTests
|
||||||
|
from .encoding import TestEncodingUtils
|
||||||
from .feedgenerator import FeedgeneratorTest
|
from .feedgenerator import FeedgeneratorTest
|
||||||
from .functional import FunctionalTestCase
|
from .functional import FunctionalTestCase
|
||||||
from .html import TestUtilsHtml
|
from .html import TestUtilsHtml
|
||||||
|
|
Loading…
Reference in New Issue