mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
bpo-32032: Test both implementations of module-level pickle API. (#4401)
This commit is contained in:
parent
2ae4ad7ca4
commit
6545256df9
3 changed files with 25 additions and 18 deletions
|
@ -2534,7 +2534,7 @@ class AbstractPickleModuleTests(unittest.TestCase):
|
|||
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 @@ class AbstractPickleModuleTests(unittest.TestCase):
|
|||
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 @@ class AbstractPickleModuleTests(unittest.TestCase):
|
|||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue