Fixed #18719 -- Made force_bytes more consistent with force_text.
This commit is contained in:
parent
bd8e1a354c
commit
e492ab8e7e
|
@ -122,7 +122,7 @@ def force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'):
|
|||
return s
|
||||
else:
|
||||
return s.decode('utf-8', errors).encode(encoding, errors)
|
||||
if strings_only and (s is None or isinstance(s, int)):
|
||||
if strings_only and is_protected_type(s):
|
||||
return s
|
||||
if isinstance(s, Promise):
|
||||
return six.text_type(s).encode(encoding, errors)
|
||||
|
|
|
@ -2,11 +2,13 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
import unittest
|
||||
import datetime
|
||||
|
||||
from django.utils.encoding import force_bytes, filepath_to_uri
|
||||
|
||||
|
||||
class TestEncodingUtils(unittest.TestCase):
|
||||
|
||||
def test_force_bytes_exception(self):
|
||||
"""
|
||||
Test that force_bytes knows how to convert to bytes an exception
|
||||
|
@ -17,6 +19,10 @@ class TestEncodingUtils(unittest.TestCase):
|
|||
result = force_bytes(exc)
|
||||
self.assertEqual(result, error_msg.encode('utf-8'))
|
||||
|
||||
def test_force_bytes_strings_only(self):
|
||||
today = datetime.date.today()
|
||||
self.assertEqual(force_bytes(today, strings_only=True), today)
|
||||
|
||||
def test_filepath_to_uri(self):
|
||||
self.assertEqual(filepath_to_uri('upload\\чубака.mp4'),
|
||||
'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4')
|
||||
|
|
Loading…
Reference in New Issue