diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2022-12-21 14:31:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-21 14:31:22 (GMT) |
commit | b98d2d31bffcaeb0c4c8848a8d1b35419c70b2da (patch) | |
tree | 88b8464363325aee9f2d928418ce091788f1bd3b | |
parent | 12be23cf3c1301be2c6b8fd4cb2cd35a567d2ea2 (diff) | |
download | cpython-b98d2d31bffcaeb0c4c8848a8d1b35419c70b2da.zip cpython-b98d2d31bffcaeb0c4c8848a8d1b35419c70b2da.tar.gz cpython-b98d2d31bffcaeb0c4c8848a8d1b35419c70b2da.tar.bz2 |
gh-100129: Add tests for pickling all builtin types and functions (GH-100142)
-rw-r--r-- | Lib/test/pickletester.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 499f80a..6e87370 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -1,3 +1,4 @@ +import builtins import collections import copyreg import dbm @@ -11,6 +12,7 @@ import shutil import struct import sys import threading +import types import unittest import weakref from textwrap import dedent @@ -1980,6 +1982,33 @@ class AbstractPickleTests: u = self.loads(s) 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 def test_proto(self): |