[Python-checkins] [3.9] bpo-11105: reduce the recursion limit for tests. (GH-26605)
isidentical
webhook-mailer at python.org
Tue Jun 8 13:39:55 EDT 2021
https://github.com/python/cpython/commit/87f502231c6d5b04a4d8aa23fba24fcf5303aebb
commit: 87f502231c6d5b04a4d8aa23fba24fcf5303aebb
branch: 3.9
author: Batuhan Taskaya <batuhan at python.org>
committer: isidentical <isidentical at gmail.com>
date: 2021-06-08T20:39:47+03:00
summary:
[3.9] bpo-11105: reduce the recursion limit for tests. (GH-26605)
(cherry picked from commit e58d762c1fb4ad5e021d016c80c2bc4513632d2f)
Co-authored-by: Batuhan Taskaya <batuhan at python.org>
files:
M Lib/test/support/__init__.py
M Lib/test/test_ast.py
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index aee3737ffc4097..229e1ac0a2a22e 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -3199,3 +3199,13 @@ def skip_if_broken_multiprocessing_synchronize():
synchronize.Lock(ctx=None)
except OSError as exc:
raise unittest.SkipTest(f"broken multiprocessing SemLock: {exc!r}")
+
+
+ at contextlib.contextmanager
+def infinite_recursion(max_depth=75):
+ original_depth = sys.getrecursionlimit()
+ try:
+ sys.setrecursionlimit(max_depth)
+ yield
+ finally:
+ sys.setrecursionlimit(original_depth)
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index b229921f5c07c5..c3e3be6335340b 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -1031,7 +1031,8 @@ def test_recursion_direct(self):
e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0)
e.operand = e
with self.assertRaises(RecursionError):
- compile(ast.Expression(e), "<test>", "eval")
+ with support.infinite_recursion():
+ compile(ast.Expression(e), "<test>", "eval")
def test_recursion_indirect(self):
e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0)
@@ -1039,7 +1040,8 @@ def test_recursion_indirect(self):
e.operand = f
f.operand = e
with self.assertRaises(RecursionError):
- compile(ast.Expression(e), "<test>", "eval")
+ with support.infinite_recursion():
+ compile(ast.Expression(e), "<test>", "eval")
class ASTValidatorTests(unittest.TestCase):
More information about the Python-checkins
mailing list