[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.
This commit is contained in:
Neil Schemenauer 2025-04-28 20:33:13 -07:00 committed by GitHub
parent ca46ec85f8
commit 64dcbb0c31
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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):