https://github.com/python/cpython/commit/64dcbb0c31adb068570725003fd6d2ddd8ee1507
commit: 64dcbb0c31adb068570725003fd6d2ddd8ee1507
branch: 3.13
author: Neil Schemenauer <[email protected]>
committer: nascheme <[email protected]>
date: 2025-04-29T03:33:13Z
summary:
[3.13] gh-133122: Fix for test_type_lookup_mro_reference. (gh-133127)
Change the unit test case to use `getattr()` so that we avoid the
bytecode specializer optimizing the access. The specializer will call
the `__eq__` method before the unit test expects, causing it to fail.
In the 3.14 branch (gh-128164) the test is changed in a different way
to avoid the same issue.
files:
M Lib/test/test_descr.py
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index f5f8931a046b81..ebea459f1ac6b7 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -5177,10 +5177,15 @@ class Base2(object):
with self.assertWarnsRegex(RuntimeWarning, 'X'):
X = type('X', (Base,), {MyKey(): 5})
+
+ # Note that the access below uses getattr() rather than normally
+ # accessing the attribute. That is done to avoid the bytecode
+ # specializer activating on repeated runs of the test.
+
# mykey is read from Base
- self.assertEqual(X.mykey, 'from Base')
+ self.assertEqual(getattr(X, 'mykey'), 'from Base')
# mykey2 is read from Base2 because MyKey.__eq__ has set __bases__
- self.assertEqual(X.mykey2, 'from Base2')
+ self.assertEqual(getattr(X, 'mykey2'), 'from Base2')
class PicklingTests(unittest.TestCase):
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]