mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
![]() We add some new rules that are required for preserving internal invariants of types. 1. If type (or a subclass of type) appears in bases, it must appear before any non-type bases. If a non-type base (like a regular new-style class) occurred first, it could trick type into allocating the new class an __dict__ which must be impossible. 2. There are several checks that are made of bases when creating a type. Those checks are now repeated when assigning to __bases__. We also add the restriction that assignment to __bases__ may not change the metaclass of the type. Add new tests for these cases and for a few other oddball errors that were no previously tested. Remove a crasher test that was fixed. Also some internal refactoring: Extract the code to find the most derived metaclass of a type and its bases. It is now needed in two places. Rewrite the TypeError checks in test_descr to use doctest. The tests now clearly show what exception they expect to see. |
||
---|---|---|
.. | ||
bogus_code_obj.py | ||
bogus_sre_bytecode.py | ||
borrowed_ref_1.py | ||
borrowed_ref_2.py | ||
dangerous_subclassing.py | ||
gc_inspection.py | ||
infinite_loop_re.py | ||
infinite_rec_1.py | ||
infinite_rec_2.py | ||
infinite_rec_4.py | ||
infinite_rec_5.py | ||
loosing_dict_ref.py | ||
loosing_mro_ref.py | ||
nasty_eq_vs_dict.py | ||
README | ||
recursion_limit_too_high.py | ||
recursive_call.py | ||
weakref_in_del.py |
This directory only contains tests for outstanding bugs that cause the interpreter to segfault. Ideally this directory should always be empty. Sometimes it may not be easy to fix the underlying cause. Each test should fail when run from the command line: ./python Lib/test/crashers/weakref_in_del.py Each test should have a link to the bug report: # http://python.org/sf/BUG# Put as much info into a docstring or comments to help determine the cause of the failure. Particularly note if the cause is system or environment dependent and what the variables are. Once the crash is fixed, the test case should be moved into an appropriate test (even if it was originally from the test suite). This ensures the regression doesn't happen again. And if it does, it should be easier to track down.