https://github.com/python/cpython/commit/dc1a4dda88637d551d0be26632186be10343b098
commit: dc1a4dda88637d551d0be26632186be10343b098
branch: 3.14
author: Miss Islington (bot) <31488909+miss-isling...@users.noreply.github.com>
committer: serhiy-storchaka <storch...@gmail.com>
date: 2025-05-08T15:19:58Z
summary:

[3.14] gh-131031: Fix test_pickle when invoked directly (GH-133356) (GH-133673)

(cherry picked from commit e15bbfafbcc9153fa0b05beb806984e288fdefe4)

Co-authored-by: Serhiy Storchaka <storch...@gmail.com>

files:
M Lib/test/pickletester.py

diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index bdc7ef62943a28..dcba6369541049 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -2272,7 +2272,11 @@ def test_nonencodable_module_name_error(self):
 
     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 @@ def test_nested_lookup_error(self):
                     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 @@ def test_nested_lookup_error(self):
                 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 @@ def test_wrong_object_lookup_error(self):
                 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

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to