[Python-checkins] bpo-32032: Test both implementations of module-level pickle API. (GH-4401) (#4403)

Serhiy Storchaka webhook-mailer at python.org
Wed Nov 15 07:32:08 EST 2017


https://github.com/python/cpython/commit/eb38367f20b05f2ad04a4833bceb369b5e78b1a3
commit: eb38367f20b05f2ad04a4833bceb369b5e78b1a3
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Serhiy Storchaka <storchaka at gmail.com>
date: 2017年11月15日T14:32:04+02:00
summary:
bpo-32032: Test both implementations of module-level pickle API. (GH-4401) (#4403)
(cherry picked from commit 6545256df93ba54f811206107274cfa5a6d76b86)
files:
M Lib/test/pickletester.py
M Lib/test/test_pickle.py
M Lib/test/test_pickletools.py
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 5c83361027b..a1c0bd726fe 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -2534,7 +2534,7 @@ def test_dump_closed_file(self):
 f = open(TESTFN, "wb")
 try:
 f.close()
- self.assertRaises(ValueError, pickle.dump, 123, f)
+ self.assertRaises(ValueError, self.dump, 123, f)
 finally:
 os.remove(TESTFN)
 
@@ -2543,16 +2543,16 @@ def test_load_closed_file(self):
 f = open(TESTFN, "wb")
 try:
 f.close()
- self.assertRaises(ValueError, pickle.dump, 123, f)
+ self.assertRaises(ValueError, self.dump, 123, f)
 finally:
 os.remove(TESTFN)
 
 def test_load_from_and_dump_to_file(self):
 stream = io.BytesIO()
 data = [123, {}, 124]
- pickle.dump(data, stream)
+ self.dump(data, stream)
 stream.seek(0)
- unpickled = pickle.load(stream)
+ unpickled = self.load(stream)
 self.assertEqual(unpickled, data)
 
 def test_highest_protocol(self):
@@ -2562,20 +2562,20 @@ def test_highest_protocol(self):
 def test_callapi(self):
 f = io.BytesIO()
 # With and without keyword arguments
- pickle.dump(123, f, -1)
- pickle.dump(123, file=f, protocol=-1)
- pickle.dumps(123, -1)
- pickle.dumps(123, protocol=-1)
- pickle.Pickler(f, -1)
- pickle.Pickler(f, protocol=-1)
+ self.dump(123, f, -1)
+ self.dump(123, file=f, protocol=-1)
+ self.dumps(123, -1)
+ self.dumps(123, protocol=-1)
+ self.Pickler(f, -1)
+ self.Pickler(f, protocol=-1)
 
 def test_bad_init(self):
 # Test issue3664 (pickle can segfault from a badly initialized Pickler).
 # Override initialization without calling __init__() of the superclass.
- class BadPickler(pickle.Pickler):
+ class BadPickler(self.Pickler):
 def __init__(self): pass
 
- class BadUnpickler(pickle.Unpickler):
+ class BadUnpickler(self.Unpickler):
 def __init__(self): pass
 
 self.assertRaises(pickle.PicklingError, BadPickler().dump, 0)
diff --git a/Lib/test/test_pickle.py b/Lib/test/test_pickle.py
index e6c5d08522a..ee71c632733 100644
--- a/Lib/test/test_pickle.py
+++ b/Lib/test/test_pickle.py
@@ -26,8 +26,13 @@
 has_c_implementation = False
 
 
-class PickleTests(AbstractPickleModuleTests):
- pass
+class PyPickleTests(AbstractPickleModuleTests):
+ dump = staticmethod(pickle._dump)
+ dumps = staticmethod(pickle._dumps)
+ load = staticmethod(pickle._load)
+ loads = staticmethod(pickle._loads)
+ Pickler = pickle._Pickler
+ Unpickler = pickle._Unpickler
 
 
 class PyUnpicklerTests(AbstractUnpickleTests):
@@ -136,6 +141,9 @@ def get_dispatch_table(self):
 
 
 if has_c_implementation:
+ class CPickleTests(AbstractPickleModuleTests):
+ from _pickle import dump, dumps, load, loads, Pickler, Unpickler
+
 class CUnpicklerTests(PyUnpicklerTests):
 unpickler = _pickle.Unpickler
 bad_stack_errors = (pickle.UnpicklingError,)
@@ -426,12 +434,12 @@ def test_multiprocessing_exceptions(self):
 
 
 def test_main():
- tests = [PickleTests, PyUnpicklerTests, PyPicklerTests,
+ tests = [PyPickleTests, PyUnpicklerTests, PyPicklerTests,
 PyPersPicklerTests, PyIdPersPicklerTests,
 PyDispatchTableTests, PyChainDispatchTableTests,
 CompatPickleTests]
 if has_c_implementation:
- tests.extend([CUnpicklerTests, CPicklerTests,
+ tests.extend([CPickleTests, CUnpicklerTests, CPicklerTests,
 CPersPicklerTests, CIdPersPicklerTests,
 CDumpPickle_LoadPickle, DumpPickle_CLoadPickle,
 PyPicklerUnpicklerObjectTests,
diff --git a/Lib/test/test_pickletools.py b/Lib/test/test_pickletools.py
index 86bebfa0266..b3cab0e4fb3 100644
--- a/Lib/test/test_pickletools.py
+++ b/Lib/test/test_pickletools.py
@@ -2,10 +2,9 @@
 import pickletools
 from test import support
 from test.pickletester import AbstractPickleTests
-from test.pickletester import AbstractPickleModuleTests
 import unittest
 
-class OptimizedPickleTests(AbstractPickleTests, AbstractPickleModuleTests):
+class OptimizedPickleTests(AbstractPickleTests):
 
 def dumps(self, arg, proto=None):
 return pickletools.optimize(pickle.dumps(arg, proto))


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /