|
7 | 7 | Py_GIL_DISABLED) |
8 | 8 | from test.support.import_helper import import_module |
9 | 9 | from test.support.os_helper import temp_dir, TESTFN, unlink |
10 | | -from test.support.script_helper import assert_python_ok, make_script, run_test_script |
| 10 | +from test.support.script_helper import assert_python_ok, make_script |
11 | 11 | from test.support import threading_helper, gc_threshold |
12 | 12 |
|
13 | 13 | import gc |
@@ -399,11 +399,19 @@ def test_collect_generations(self): |
399 | 399 | # each call to collect(N) |
400 | 400 | x = [] |
401 | 401 | gc.collect(0) |
402 | | - # x is now in the old gen |
| 402 | + # x is now in gen 1 |
403 | 403 | a, b, c = gc.get_count() |
404 | | - # We don't check a since its exact values depends on |
| 404 | + gc.collect(1) |
| 405 | + # x is now in gen 2 |
| 406 | + d, e, f = gc.get_count() |
| 407 | + gc.collect(2) |
| 408 | + # x is now in gen 3 |
| 409 | + g, h, i = gc.get_count() |
| 410 | + # We don't check a, d, g since their exact values depends on |
405 | 411 | # internal implementation details of the interpreter. |
406 | 412 | self.assertEqual((b, c), (1, 0)) |
| 413 | + self.assertEqual((e, f), (0, 1)) |
| 414 | + self.assertEqual((h, i), (0, 0)) |
407 | 415 |
|
408 | 416 | def test_trashcan(self): |
409 | 417 | class Ouch: |
@@ -870,10 +878,42 @@ def test_get_objects_generations(self): |
870 | 878 | self.assertTrue( |
871 | 879 | any(l is element for element in gc.get_objects(generation=0)) |
872 | 880 | ) |
873 | | - gc.collect() |
| 881 | + self.assertFalse( |
| 882 | + any(l is element for element in gc.get_objects(generation=1)) |
| 883 | + ) |
| 884 | + self.assertFalse( |
| 885 | + any(l is element for element in gc.get_objects(generation=2)) |
| 886 | + ) |
| 887 | + gc.collect(generation=0) |
| 888 | + self.assertFalse( |
| 889 | + any(l is element for element in gc.get_objects(generation=0)) |
| 890 | + ) |
| 891 | + self.assertTrue( |
| 892 | + any(l is element for element in gc.get_objects(generation=1)) |
| 893 | + ) |
| 894 | + self.assertFalse( |
| 895 | + any(l is element for element in gc.get_objects(generation=2)) |
| 896 | + ) |
| 897 | + gc.collect(generation=1) |
874 | 898 | self.assertFalse( |
875 | 899 | any(l is element for element in gc.get_objects(generation=0)) |
876 | 900 | ) |
| 901 | + self.assertFalse( |
| 902 | + any(l is element for element in gc.get_objects(generation=1)) |
| 903 | + ) |
| 904 | + self.assertTrue( |
| 905 | + any(l is element for element in gc.get_objects(generation=2)) |
| 906 | + ) |
| 907 | + gc.collect(generation=2) |
| 908 | + self.assertFalse( |
| 909 | + any(l is element for element in gc.get_objects(generation=0)) |
| 910 | + ) |
| 911 | + self.assertFalse( |
| 912 | + any(l is element for element in gc.get_objects(generation=1)) |
| 913 | + ) |
| 914 | + self.assertTrue( |
| 915 | + any(l is element for element in gc.get_objects(generation=2)) |
| 916 | + ) |
877 | 917 | del l |
878 | 918 | gc.collect() |
879 | 919 |
|
@@ -1181,17 +1221,6 @@ def test_tuple_untrack_counts(self): |
1181 | 1221 | self.assertTrue(new_count - count > (n // 2)) |
1182 | 1222 |
|
1183 | 1223 |
|
1184 | | -class IncrementalGCTests(unittest.TestCase): |
1185 | | - @unittest.skipIf(_testinternalcapi is None, "requires _testinternalcapi") |
1186 | | - @requires_gil_enabled("Free threading does not support incremental GC") |
1187 | | - def test_incremental_gc_handles_fast_cycle_creation(self): |
1188 | | - # Run this test in a fresh process. The number of alive objects (which can |
1189 | | - # be from unit tests run before this one) can influence how quickly cyclic |
1190 | | - # garbage is found. |
1191 | | - script = support.findfile("_test_gc_fast_cycles.py") |
1192 | | - run_test_script(script) |
1193 | | - |
1194 | | - |
1195 | 1224 | class GCCallbackTests(unittest.TestCase): |
1196 | 1225 | def setUp(self): |
1197 | 1226 | # Save gc state and disable it. |
|
0 commit comments