diff options
Diffstat (limited to 'oslo_utils/tests/tests_encodeutils.py')
-rw-r--r-- | oslo_utils/tests/tests_encodeutils.py | 127 |
1 files changed, 20 insertions, 107 deletions
diff --git a/oslo_utils/tests/tests_encodeutils.py b/oslo_utils/tests/tests_encodeutils.py index 546e8ea..b2f914f 100644 --- a/oslo_utils/tests/tests_encodeutils.py +++ b/oslo_utils/tests/tests_encodeutils.py @@ -19,8 +19,6 @@ from unittest import mock from oslo_i18n import fixture as oslo_i18n_fixture from oslotest import base as test_base -import six -import testtools from oslo_utils import encodeutils @@ -30,25 +28,23 @@ class EncodeUtilsTest(test_base.BaseTestCase): def test_safe_decode(self): safe_decode = encodeutils.safe_decode self.assertRaises(TypeError, safe_decode, True) - self.assertEqual(six.u('ni\xf1o'), safe_decode(six.b("ni\xc3\xb1o"), - incoming="utf-8")) - if six.PY2: - # In Python 3, bytes.decode() doesn't support anymore - # bytes => bytes encodings like base64 - self.assertEqual(six.u("test"), safe_decode("dGVzdA==", - incoming='base64')) - - self.assertEqual(six.u("strange"), safe_decode(six.b('\x80strange'), - errors='ignore')) - - self.assertEqual(six.u('\xc0'), safe_decode(six.b('\xc0'), + self.assertEqual('ni\xf1o', + safe_decode("ni\xc3\xb1o".encode("latin-1"), + incoming="utf-8")) + + self.assertEqual("strange", + safe_decode('\x80strange'.encode("latin-1"), + errors='ignore')) + + self.assertEqual('\xc0', safe_decode('\xc0'.encode("latin-1"), incoming='iso-8859-1')) # Forcing incoming to ascii so it falls back to utf-8 - self.assertEqual(six.u('ni\xf1o'), safe_decode(six.b('ni\xc3\xb1o'), - incoming='ascii')) + self.assertEqual('ni\xf1o', + safe_decode('ni\xc3\xb1o'.encode("latin-1"), + incoming='ascii')) - self.assertEqual(six.u('foo'), safe_decode(b'foo')) + self.assertEqual('foo', safe_decode(b'foo')) def test_safe_encode_none_instead_of_text(self): self.assertRaises(TypeError, encodeutils.safe_encode, None) @@ -68,28 +64,18 @@ class EncodeUtilsTest(test_base.BaseTestCase): def test_safe_encode_tuple_instead_of_text(self): self.assertRaises(TypeError, encodeutils.safe_encode, ('foo', 'bar', )) - def test_safe_encode_py2(self): - if six.PY2: - # In Python 3, str.encode() doesn't support anymore - # text => text encodings like base64 - self.assertEqual( - six.b("dGVzdA==\n"), - encodeutils.safe_encode("test", encoding='base64'), - ) - else: - self.skipTest("Requires py2.x") - def test_safe_encode_force_incoming_utf8_to_ascii(self): # Forcing incoming to ascii so it falls back to utf-8 self.assertEqual( - six.b('ni\xc3\xb1o'), - encodeutils.safe_encode(six.b('ni\xc3\xb1o'), incoming='ascii'), + 'ni\xc3\xb1o'.encode("latin-1"), + encodeutils.safe_encode('ni\xc3\xb1o'.encode("latin-1"), + incoming='ascii'), ) def test_safe_encode_same_encoding_different_cases(self): with mock.patch.object(encodeutils, 'safe_decode', mock.Mock()): utf8 = encodeutils.safe_encode( - six.u('foo\xf1bar'), encoding='utf-8') + 'foo\xf1bar', encoding='utf-8') self.assertEqual( encodeutils.safe_encode(utf8, 'UTF-8', 'utf-8'), encodeutils.safe_encode(utf8, 'utf-8', 'UTF-8'), @@ -101,11 +87,11 @@ class EncodeUtilsTest(test_base.BaseTestCase): encodeutils.safe_decode.assert_has_calls([]) def test_safe_encode_different_encodings(self): - text = six.u('foo\xc3\xb1bar') + text = 'foo\xc3\xb1bar' result = encodeutils.safe_encode( text=text, incoming='utf-8', encoding='iso-8859-1') self.assertNotEqual(text, result) - self.assertNotEqual(six.b("foo\xf1bar"), result) + self.assertNotEqual("foo\xf1bar".encode("latin-1"), result) def test_to_utf8(self): self.assertEqual(encodeutils.to_utf8(b'a\xe9\xff'), # bytes @@ -115,7 +101,7 @@ class EncodeUtilsTest(test_base.BaseTestCase): self.assertRaises(TypeError, encodeutils.to_utf8, 123) # invalid # oslo.i18n Message objects should also be accepted for convenience. - # It works because Message is a subclass of six.text_type. Use the + # It works because Message is a subclass of str. Use the # lazy translation to get a Message instance of oslo_i18n. msg = oslo_i18n_fixture.Translation().lazy("test") self.assertEqual(encodeutils.to_utf8(msg), @@ -177,79 +163,6 @@ class ExceptionToUnicodeTest(test_base.BaseTestCase): self.assertEqual(encodeutils.exception_to_unicode(exc), u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439') - @testtools.skipIf(six.PY3, 'test specific to Python 2') - def test_unicode_exception(self): - # Exception with a __unicode__() method, but no __str__() - class UnicodeException(Exception): - def __init__(self, value): - Exception.__init__(self) - self.value = value - - def __unicode__(self): - return self.value - - # __unicode__() returns unicode - exc = UnicodeException(u'unicode \xe9\u20ac') - self.assertEqual(encodeutils.exception_to_unicode(exc), - u'unicode \xe9\u20ac') - - # __unicode__() returns bytes (does this case really happen in the - # wild?) - exc = UnicodeException(b'utf-8 \xc3\xa9\xe2\x82\xac') - self.assertEqual(encodeutils.exception_to_unicode(exc), - u'utf-8 \xe9\u20ac') - - @testtools.skipIf(six.PY3, 'test specific to Python 2') - def test_unicode_or_str_exception(self): - # Exception with __str__() and __unicode__() methods - class UnicodeOrStrException(Exception): - def __init__(self, unicode_value, str_value): - Exception.__init__(self) - self.unicode_value = unicode_value - self.str_value = str_value - - def __unicode__(self): - return self.unicode_value - - def __str__(self): - return self.str_value - - # __unicode__() returns unicode - exc = UnicodeOrStrException(u'unicode \xe9\u20ac', b'str') - self.assertEqual(encodeutils.exception_to_unicode(exc), - u'unicode \xe9\u20ac') - - # __unicode__() returns bytes (does this case really happen in the - # wild?) - exc = UnicodeOrStrException(b'utf-8 \xc3\xa9\xe2\x82\xac', b'str') - self.assertEqual(encodeutils.exception_to_unicode(exc), - u'utf-8 \xe9\u20ac') - - @testtools.skipIf(six.PY3, 'test specific to Python 2') - def test_unicode_only_exception(self): - # Exception with a __unicode__() method and a __str__() which - # raises an exception (similar to the Message class of oslo_i18n) - class UnicodeOnlyException(Exception): - def __init__(self, value): - Exception.__init__(self) - self.value = value - - def __unicode__(self): - return self.value - - def __str__(self): - raise UnicodeError("use unicode()") - - # __unicode__() returns unicode - exc = UnicodeOnlyException(u'unicode \xe9\u20ac') - self.assertEqual(encodeutils.exception_to_unicode(exc), - u'unicode \xe9\u20ac') - - # __unicode__() returns bytes - exc = UnicodeOnlyException(b'utf-8 \xc3\xa9\xe2\x82\xac') - self.assertEqual(encodeutils.exception_to_unicode(exc), - u'utf-8 \xe9\u20ac') - def test_oslo_i18n_message(self): # use the lazy translation to get a Message instance of oslo_i18n exc = oslo_i18n_fixture.Translation().lazy("test") |