Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Fix for test_type_lookup_mro_reference.
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.
  • Loading branch information
nascheme committed Apr 29, 2025
commit 36a74b994d896ddad5590cd8dd89fa4193c03cff
9 changes: 7 additions & 2 deletions Lib/test/test_descr.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
Loading