1414from test .pickletester import AbstractPickleTests
1515from test .pickletester import AbstractPickleModuleTests
1616from test .pickletester import AbstractPersistentPicklerTests
17+ from test .pickletester import AbstractIdentityPersistentPicklerTests
1718from test .pickletester import AbstractPicklerUnpicklerObjectTests
1819from test .pickletester import AbstractDispatchTableTests
1920from test .pickletester import BigmemPickleTests
@@ -82,10 +83,7 @@ def loads(self, buf, **kwds):
8283 return pickle .loads (buf , ** kwds )
8384
8485
85- class PyPersPicklerTests (AbstractPersistentPicklerTests ):
86-
87- pickler = pickle ._Pickler
88- unpickler = pickle ._Unpickler
86+ class PersistentPicklerUnpicklerMixin (object ):
8987
9088 def dumps (self , arg , proto = None ):
9189 class PersPickler (self .pickler ):
@@ -94,8 +92,7 @@ def persistent_id(subself, obj):
9492 f = io .BytesIO ()
9593 p = PersPickler (f , proto )
9694 p .dump (arg )
97- f .seek (0 )
98- return f .read ()
95+ return f .getvalue ()
9996
10097 def loads (self , buf , ** kwds ):
10198 class PersUnpickler (self .unpickler ):
@@ -106,6 +103,20 @@ def persistent_load(subself, obj):
106103 return u .load ()
107104
108105
106+ class PyPersPicklerTests (AbstractPersistentPicklerTests ,
107+ PersistentPicklerUnpicklerMixin ):
108+
109+ pickler = pickle ._Pickler
110+ unpickler = pickle ._Unpickler
111+
112+
113+ class PyIdPersPicklerTests (AbstractIdentityPersistentPicklerTests ,
114+ PersistentPicklerUnpicklerMixin ):
115+
116+ pickler = pickle ._Pickler
117+ unpickler = pickle ._Unpickler
118+
119+
109120class PyPicklerUnpicklerObjectTests (AbstractPicklerUnpicklerObjectTests ):
110121
111122 pickler_class = pickle ._Pickler
@@ -144,6 +155,10 @@ class CPersPicklerTests(PyPersPicklerTests):
144155 pickler = _pickle .Pickler
145156 unpickler = _pickle .Unpickler
146157
158+ class CIdPersPicklerTests (PyIdPersPicklerTests ):
159+ pickler = _pickle .Pickler
160+ unpickler = _pickle .Unpickler
161+
147162 class CDumpPickle_LoadPickle (PyPicklerTests ):
148163 pickler = _pickle .Pickler
149164 unpickler = pickle ._Unpickler
@@ -409,11 +424,13 @@ def test_multiprocessing_exceptions(self):
409424
410425
411426def test_main ():
412- tests = [PickleTests , PyUnpicklerTests , PyPicklerTests , PyPersPicklerTests ,
427+ tests = [PickleTests , PyUnpicklerTests , PyPicklerTests ,
428+ PyPersPicklerTests , PyIdPersPicklerTests ,
413429 PyDispatchTableTests , PyChainDispatchTableTests ,
414430 CompatPickleTests ]
415431 if has_c_implementation :
416- tests .extend ([CUnpicklerTests , CPicklerTests , CPersPicklerTests ,
432+ tests .extend ([CUnpicklerTests , CPicklerTests ,
433+ CPersPicklerTests , CIdPersPicklerTests ,
417434 CDumpPickle_LoadPickle , DumpPickle_CLoadPickle ,
418435 PyPicklerUnpicklerObjectTests ,
419436 CPicklerUnpicklerObjectTests ,
0 commit comments