bpo-36016: Add generation option to gc.getobjects() (GH-11909)

This commit is contained in:
Pablo Galindo 2019-02-23 03:02:06 +00:00 committed by Inada Naoki
parent df5cdc1112
commit 175421b58c
6 changed files with 112 additions and 14 deletions

View file

@ -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):