summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_gc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_gc.py')
-rw-r--r--Lib/test/test_gc.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py
index 906f988..bb7df1f 100644
--- a/Lib/test/test_gc.py
+++ b/Lib/test/test_gc.py
@@ -1048,6 +1048,24 @@ class GCTests(unittest.TestCase):
callback.assert_not_called()
gc.enable()
+ @cpython_only
+ def test_get_referents_on_capsule(self):
+ # gh-124538: Calling gc.get_referents() on an untracked capsule must not crash.
+ import _datetime
+ import _socket
+ untracked_capsule = _datetime.datetime_CAPI
+ tracked_capsule = _socket.CAPI
+
+ # For whoever sees this in the future: if this is failing
+ # after making datetime's capsule tracked, that's fine -- this isn't something
+ # users are relying on. Just find a different capsule that is untracked.
+ self.assertFalse(gc.is_tracked(untracked_capsule))
+ self.assertTrue(gc.is_tracked(tracked_capsule))
+
+ self.assertEqual(len(gc.get_referents(untracked_capsule)), 0)
+ gc.get_referents(tracked_capsule)
+
+
class IncrementalGCTests(unittest.TestCase):