I don't know why staring at the email to python-checkins made me
see problems with my code that I didn't see before the checkin, but:
When a subtype .mro() fails, we need to reset the type whose __bases__
are being changed, too. Fix + test.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 19a0ae4..99eecd3 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -3566,11 +3566,13 @@
# check here that E's gets restored.
E_mro_before = E.__mro__
+ D_mro_before = D.__mro__
try:
D.__bases__ = (C2,)
except RuntimeError:
vereq(E.__mro__, E_mro_before)
+ vereq(D.__mro__, D_mro_before)
else:
raise TestFailed, "exception not propagated"