mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-36016: Add generation option to gc.getobjects() (GH-11909)
This commit is contained in:
parent
df5cdc1112
commit
175421b58c
6 changed files with 112 additions and 14 deletions
|
@ -766,6 +766,38 @@ class GCTests(unittest.TestCase):
|
|||
gc.unfreeze()
|
||||
self.assertEqual(gc.get_freeze_count(), 0)
|
||||
|
||||
def test_get_objects(self):
|
||||
gc.collect()
|
||||
l = []
|
||||
l.append(l)
|
||||
self.assertIn(l, gc.get_objects(generation=0))
|
||||
self.assertNotIn(l, gc.get_objects(generation=1))
|
||||
self.assertNotIn(l, gc.get_objects(generation=2))
|
||||
gc.collect(generation=0)
|
||||
self.assertNotIn(l, gc.get_objects(generation=0))
|
||||
self.assertIn(l, gc.get_objects(generation=1))
|
||||
self.assertNotIn(l, gc.get_objects(generation=2))
|
||||
gc.collect(generation=1)
|
||||
self.assertNotIn(l, gc.get_objects(generation=0))
|
||||
self.assertNotIn(l, gc.get_objects(generation=1))
|
||||
self.assertIn(l, gc.get_objects(generation=2))
|
||||
gc.collect(generation=2)
|
||||
self.assertNotIn(l, gc.get_objects(generation=0))
|
||||
self.assertNotIn(l, gc.get_objects(generation=1))
|
||||
self.assertIn(l, gc.get_objects(generation=2))
|
||||
del l
|
||||
gc.collect()
|
||||
|
||||
def test_get_objects_arguments(self):
|
||||
gc.collect()
|
||||
self.assertEqual(len(gc.get_objects()),
|
||||
len(gc.get_objects(generation=None)))
|
||||
|
||||
self.assertRaises(ValueError, gc.get_objects, 1000)
|
||||
self.assertRaises(ValueError, gc.get_objects, -1000)
|
||||
self.assertRaises(TypeError, gc.get_objects, "1")
|
||||
self.assertRaises(TypeError, gc.get_objects, 1.234)
|
||||
|
||||
|
||||
class GCCallbackTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue