[3.10] bpo-25130: Add calls of gc.collect() in tests to support PyPy (GH-28005) (GH-28027)
(cherry picked from commit 2a8127cafe1d196f858a3ecabf5f1df3eebf9a12)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 520deb3..09a555a 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -656,6 +656,7 @@ def inner_raising_func():
except MyException as e:
pass
obj = None
+ gc_collect() # For PyPy or other GCs.
obj = wr()
self.assertIsNone(obj)
@@ -667,6 +668,7 @@ def inner_raising_func():
except MyException:
pass
obj = None
+ gc_collect() # For PyPy or other GCs.
obj = wr()
self.assertIsNone(obj)
@@ -678,6 +680,7 @@ def inner_raising_func():
except:
pass
obj = None
+ gc_collect() # For PyPy or other GCs.
obj = wr()
self.assertIsNone(obj)
@@ -690,6 +693,7 @@ def inner_raising_func():
except:
break
obj = None
+ gc_collect() # For PyPy or other GCs.
obj = wr()
self.assertIsNone(obj)
@@ -708,6 +712,7 @@ def inner_raising_func():
# must clear the latter manually for our test to succeed.
e.__context__ = None
obj = None
+ gc_collect() # For PyPy or other GCs.
obj = wr()
# guarantee no ref cycles on CPython (don't gc_collect)
if check_impl_detail(cpython=False):
@@ -898,6 +903,7 @@ def raising_gen():
next(g)
testfunc(g)
g = obj = None
+ gc_collect() # For PyPy or other GCs.
obj = wr()
self.assertIsNone(obj)
@@ -951,6 +957,7 @@ def __del__(self):
raise Exception(MyObject())
except:
pass
+ gc_collect() # For PyPy or other GCs.
self.assertEqual(e, (None, None, None))
def test_raise_does_not_create_context_chain_cycle(self):
@@ -1413,6 +1420,7 @@ def inner():
self.assertNotEqual(wr(), None)
else:
self.fail("MemoryError not raised")
+ gc_collect() # For PyPy or other GCs.
self.assertEqual(wr(), None)
@no_tracing
@@ -1433,6 +1441,7 @@ def inner():
self.assertNotEqual(wr(), None)
else:
self.fail("RecursionError not raised")
+ gc_collect() # For PyPy or other GCs.
self.assertEqual(wr(), None)
def test_errno_ENOTDIR(self):
@@ -1453,6 +1462,7 @@ def __del__(self):
with support.catch_unraisable_exception() as cm:
del obj
+ gc_collect() # For PyPy or other GCs.
self.assertEqual(cm.unraisable.object, BrokenDel.__del__)
self.assertIsNotNone(cm.unraisable.exc_traceback)