mirror of
				https://github.com/django/django.git
				synced 2025-10-26 23:26:08 +00:00 
			
		
		
		
	This commit also added tests for LazyObject and refactored the testsuite of SimpleLazyObject so that it can share test cases with LazyObject.
		
			
				
	
	
		
			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)
 |