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
@@ -78,10 +79,7 @@ def loads(self, buf, **kwds):
7879 return pickle .loads (buf , ** kwds )
7980
8081
81- class PyPersPicklerTests (AbstractPersistentPicklerTests ):
82-
83- pickler = pickle ._Pickler
84- unpickler = pickle ._Unpickler
82+ class PersistentPicklerUnpicklerMixin (object ):
8583
8684 def dumps (self , arg , proto = None ):
8785 class PersPickler (self .pickler ):
@@ -90,8 +88,7 @@ def persistent_id(subself, obj):
9088 f = io .BytesIO ()
9189 p = PersPickler (f , proto )
9290 p .dump (arg )
93- f .seek (0 )
94- return f .read ()
91+ return f .getvalue ()
9592
9693 def loads (self , buf , ** kwds ):
9794 class PersUnpickler (self .unpickler ):
@@ -102,6 +99,20 @@ def persistent_load(subself, obj):
10299 return u .load ()
103100
104101
102+ class PyPersPicklerTests (AbstractPersistentPicklerTests ,
103+ PersistentPicklerUnpicklerMixin ):
104+
105+ pickler = pickle ._Pickler
106+ unpickler = pickle ._Unpickler
107+
108+
109+ class PyIdPersPicklerTests (AbstractIdentityPersistentPicklerTests ,
110+ PersistentPicklerUnpicklerMixin ):
111+
112+ pickler = pickle ._Pickler
113+ unpickler = pickle ._Unpickler
114+
115+
105116class PyPicklerUnpicklerObjectTests (AbstractPicklerUnpicklerObjectTests ):
106117
107118 pickler_class = pickle ._Pickler
@@ -139,6 +150,10 @@ class CPersPicklerTests(PyPersPicklerTests):
139150 pickler = _pickle .Pickler
140151 unpickler = _pickle .Unpickler
141152
153+ class CIdPersPicklerTests (PyIdPersPicklerTests ):
154+ pickler = _pickle .Pickler
155+ unpickler = _pickle .Unpickler
156+
142157 class CDumpPickle_LoadPickle (PyPicklerTests ):
143158 pickler = _pickle .Pickler
144159 unpickler = pickle ._Unpickler
@@ -404,11 +419,13 @@ def test_multiprocessing_exceptions(self):
404419
405420
406421def test_main ():
407- tests = [PickleTests , PyUnpicklerTests , PyPicklerTests , PyPersPicklerTests ,
422+ tests = [PickleTests , PyUnpicklerTests , PyPicklerTests ,
423+ PyPersPicklerTests , PyIdPersPicklerTests ,
408424 PyDispatchTableTests , PyChainDispatchTableTests ,
409425 CompatPickleTests ]
410426 if has_c_implementation :
411- tests .extend ([CUnpicklerTests , CPicklerTests , CPersPicklerTests ,
427+ tests .extend ([CUnpicklerTests , CPicklerTests ,
428+ CPersPicklerTests , CIdPersPicklerTests ,
412429 CDumpPickle_LoadPickle , DumpPickle_CLoadPickle ,
413430 PyPicklerUnpicklerObjectTests ,
414431 CPicklerUnpicklerObjectTests ,
0 commit comments