mirror of
				https://github.com/django/django.git
				synced 2025-11-04 05:35:37 +00:00 
			
		
		
		
	This commit also added tests for LazyObject and refactored the testsuite of SimpleLazyObject so that it can share test cases with LazyObject.
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			905 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			31 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)
 |