Fixed #24781 -- Fixed repr() for lazy objects.

This commit is contained in:
Chesco Igual 2016-06-04 16:13:00 -07:00 committed by Tim Graham
parent 2f9c4e2b6f
commit ffd18732f3
2 changed files with 18 additions and 0 deletions

View File

@ -75,6 +75,9 @@ def lazy(func, *resultclasses):
(func, self.__args, self.__kw) + resultclasses
)
def __repr__(self):
return repr(self.__cast())
@classmethod
def __prepare_class__(cls):
for resultclass in resultclasses:

View File

@ -130,3 +130,18 @@ class FunctionalTestCase(unittest.TestCase):
self.assertEqual(lazy_a(), lazy_b())
self.assertNotEqual(lazy_b(), lazy_c())
def test_lazy_repr_text(self):
original_object = 'Lazy translation text'
lazy_obj = lazy(lambda: original_object, six.text_type)
self.assertEquals(repr(original_object), repr(lazy_obj()))
def test_lazy_repr_int(self):
original_object = 15
lazy_obj = lazy(lambda: original_object, int)
self.assertEquals(repr(original_object), repr(lazy_obj()))
def test_lazy_repr_bytes(self):
original_object = b'J\xc3\xbcst a str\xc3\xadng'
lazy_obj = lazy(lambda: original_object, bytes)
self.assertEquals(repr(original_object), repr(lazy_obj()))