]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-131031: Fix test_pickle when invoked directly (GH-133356) (GH-133673)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 8 May 2025 15:19:58 +0000 (17:19 +0200)
committerGitHub <noreply@github.com>
Thu, 8 May 2025 15:19:58 +0000 (15:19 +0000)
(cherry picked from commit e15bbfafbcc9153fa0b05beb806984e288fdefe4)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/test/pickletester.py

index bdc7ef62943a2822a7ebe88e9d1273bfbaa0553f..dcba636954104937bb115f1c15050321d7a5b17f 100644 (file)
@@ -2272,7 +2272,11 @@ class AbstractPicklingErrorTests:
 
     def test_nested_lookup_error(self):
         # Nested name does not exist
-        obj = REX('AbstractPickleTests.spam')
+        global TestGlobal
+        class TestGlobal:
+            class A:
+                pass
+        obj = REX('TestGlobal.A.B.C')
         obj.__module__ = __name__
         for proto in protocols:
             with self.subTest(proto=proto):
@@ -2280,9 +2284,9 @@ class AbstractPicklingErrorTests:
                     self.dumps(obj, proto)
                 self.assertEqual(str(cm.exception),
                     f"Can't pickle {obj!r}: "
-                    f"it's not found as {__name__}.AbstractPickleTests.spam")
+                    f"it's not found as {__name__}.TestGlobal.A.B.C")
                 self.assertEqual(str(cm.exception.__context__),
-                    "type object 'AbstractPickleTests' has no attribute 'spam'")
+                    "type object 'A' has no attribute 'B'")
 
         obj.__module__ = None
         for proto in protocols:
@@ -2290,21 +2294,25 @@ class AbstractPicklingErrorTests:
                 with self.assertRaises(pickle.PicklingError) as cm:
                     self.dumps(obj, proto)
                 self.assertEqual(str(cm.exception),
-                    f"Can't pickle {obj!r}: it's not found as __main__.AbstractPickleTests.spam")
+                    f"Can't pickle {obj!r}: "
+                    f"it's not found as __main__.TestGlobal.A.B.C")
                 self.assertEqual(str(cm.exception.__context__),
-                    "module '__main__' has no attribute 'AbstractPickleTests'")
+                    "module '__main__' has no attribute 'TestGlobal'")
 
     def test_wrong_object_lookup_error(self):
         # Name is bound to different object
-        obj = REX('AbstractPickleTests')
+        global TestGlobal
+        class TestGlobal:
+            pass
+        obj = REX('TestGlobal')
         obj.__module__ = __name__
-        AbstractPickleTests.ham = []
         for proto in protocols:
             with self.subTest(proto=proto):
                 with self.assertRaises(pickle.PicklingError) as cm:
                     self.dumps(obj, proto)
                 self.assertEqual(str(cm.exception),
-                    f"Can't pickle {obj!r}: it's not the same object as {__name__}.AbstractPickleTests")
+                    f"Can't pickle {obj!r}: "
+                    f"it's not the same object as {__name__}.TestGlobal")
                 self.assertIsNone(cm.exception.__context__)
 
         obj.__module__ = None
@@ -2313,9 +2321,10 @@ class AbstractPicklingErrorTests:
                 with self.assertRaises(pickle.PicklingError) as cm:
                     self.dumps(obj, proto)
                 self.assertEqual(str(cm.exception),
-                    f"Can't pickle {obj!r}: it's not found as __main__.AbstractPickleTests")
+                    f"Can't pickle {obj!r}: "
+                    f"it's not found as __main__.TestGlobal")
                 self.assertEqual(str(cm.exception.__context__),
-                    "module '__main__' has no attribute 'AbstractPickleTests'")
+                    "module '__main__' has no attribute 'TestGlobal'")
 
     def test_local_lookup_error(self):
         # Test that whichmodule() errors out cleanly when looking up