32 lines
905 B
Python
32 lines
905 B
Python
from __future__ import unicode_literals
|
|
|
|
import pickle
|
|
|
|
from django.contrib.auth.models import User
|
|
from django.test import TestCase
|
|
from django.utils import six
|
|
from django.utils.functional import SimpleLazyObject
|
|
|
|
|
|
class TestUtilsSimpleLazyObjectDjangoTestCase(TestCase):
|
|
|
|
def test_pickle_py2_regression(self):
|
|
# See ticket #20212
|
|
user = User.objects.create_user('johndoe', 'john@example.com', 'pass')
|
|
x = SimpleLazyObject(lambda: user)
|
|
|
|
# This would fail with "TypeError: can't pickle instancemethod objects",
|
|
# only on Python 2.X.
|
|
pickle.dumps(x)
|
|
|
|
# Try the variant protocol levels.
|
|
pickle.dumps(x, 0)
|
|
pickle.dumps(x, 1)
|
|
pickle.dumps(x, 2)
|
|
|
|
if six.PY2:
|
|
import cPickle
|
|
|
|
# This would fail with "TypeError: expected string or Unicode object, NoneType found".
|
|
cPickle.dumps(x)
|