mirror of https://github.com/python/cpython.git
gh-100129: Add tests for pickling all builtin types and functions (GH-100142)
(cherry picked from commit b98d2d31bf
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
b2076b0071
commit
0397f040e2
|
@ -1,3 +1,4 @@
|
||||||
|
import builtins
|
||||||
import collections
|
import collections
|
||||||
import copyreg
|
import copyreg
|
||||||
import dbm
|
import dbm
|
||||||
|
@ -11,6 +12,7 @@
|
||||||
import struct
|
import struct
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
|
import types
|
||||||
import unittest
|
import unittest
|
||||||
import weakref
|
import weakref
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
@ -1980,6 +1982,33 @@ def test_singleton_types(self):
|
||||||
u = self.loads(s)
|
u = self.loads(s)
|
||||||
self.assertIs(type(singleton), u)
|
self.assertIs(type(singleton), u)
|
||||||
|
|
||||||
|
def test_builtin_types(self):
|
||||||
|
for t in builtins.__dict__.values():
|
||||||
|
if isinstance(t, type) and not issubclass(t, BaseException):
|
||||||
|
for proto in protocols:
|
||||||
|
s = self.dumps(t, proto)
|
||||||
|
self.assertIs(self.loads(s), t)
|
||||||
|
|
||||||
|
def test_builtin_exceptions(self):
|
||||||
|
for t in builtins.__dict__.values():
|
||||||
|
if isinstance(t, type) and issubclass(t, BaseException):
|
||||||
|
for proto in protocols:
|
||||||
|
s = self.dumps(t, proto)
|
||||||
|
u = self.loads(s)
|
||||||
|
if proto <= 2 and issubclass(t, OSError) and t is not BlockingIOError:
|
||||||
|
self.assertIs(u, OSError)
|
||||||
|
elif proto <= 2 and issubclass(t, ImportError):
|
||||||
|
self.assertIs(u, ImportError)
|
||||||
|
else:
|
||||||
|
self.assertIs(u, t)
|
||||||
|
|
||||||
|
def test_builtin_functions(self):
|
||||||
|
for t in builtins.__dict__.values():
|
||||||
|
if isinstance(t, types.BuiltinFunctionType):
|
||||||
|
for proto in protocols:
|
||||||
|
s = self.dumps(t, proto)
|
||||||
|
self.assertIs(self.loads(s), t)
|
||||||
|
|
||||||
# Tests for protocol 2
|
# Tests for protocol 2
|
||||||
|
|
||||||
def test_proto(self):
|
def test_proto(self):
|
||||||
|
|
Loading…
Reference in New Issue