diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2022-10-05 11:21:16 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-05 11:21:16 (GMT) |
commit | 77f0249308de76401bf4f3c6a057789c92f862d1 (patch) | |
tree | 0e3e16f4558d93cf47d6684f0a932b8e19a08587 /Lib/test/pickletester.py | |
parent | f8cbd79d328d90443acabc41d246332c302c815a (diff) | |
download | cpython-77f0249308de76401bf4f3c6a057789c92f862d1.zip cpython-77f0249308de76401bf4f3c6a057789c92f862d1.tar.gz cpython-77f0249308de76401bf4f3c6a057789c92f862d1.tar.bz2 |
gh-95196: Disable incorrect pickling of the C implemented classmethod descriptors (GH-96383)
Diffstat (limited to 'Lib/test/pickletester.py')
-rw-r--r-- | Lib/test/pickletester.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 21419e1..499f80a 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -2776,6 +2776,15 @@ class AbstractPickleTests: unpickled = self.loads(self.dumps(method, proto)) self.assertEqual(method(obj), unpickled(obj)) + descriptors = ( + PyMethodsTest.__dict__['cheese'], # static method descriptor + PyMethodsTest.__dict__['wine'], # class method descriptor + ) + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + for descr in descriptors: + with self.subTest(proto=proto, descr=descr): + self.assertRaises(TypeError, self.dumps, descr, proto) + def test_c_methods(self): global Subclass class Subclass(tuple): @@ -2811,6 +2820,15 @@ class AbstractPickleTests: unpickled = self.loads(self.dumps(method, proto)) self.assertEqual(method(*args), unpickled(*args)) + descriptors = ( + bytearray.__dict__['maketrans'], # built-in static method descriptor + dict.__dict__['fromkeys'], # built-in class method descriptor + ) + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + for descr in descriptors: + with self.subTest(proto=proto, descr=descr): + self.assertRaises(TypeError, self.dumps, descr, proto) + def test_compat_pickle(self): tests = [ (range(1, 7), '__builtin__', 'xrange'), |