]> granicus.if.org Git - python/commitdiff
Issue #5765: Also check the compiler when finding the recursion limit
authorNick Coghlan <ncoghlan@gmail.com>
Sun, 4 Nov 2012 14:19:18 +0000 (00:19 +1000)
committerNick Coghlan <ncoghlan@gmail.com>
Sun, 4 Nov 2012 14:19:18 +0000 (00:19 +1000)
Tools/scripts/find_recursionlimit.py

index 7a8660356ae9cda381ad1e43dbba8649de00b090..c42de7fc2b0a5fa61bb1c17291216559c92c8aa5 100755 (executable)
@@ -89,6 +89,12 @@ def test_cpickle(_cache={}):
         _pickle.Pickler(io.BytesIO(), protocol=-1).dump(l)
         _cache[n] = l
 
+def test_compiler_recursion():
+    # The compiler uses a scaling factor to support additional levels
+    # of recursion. This is a sanity check of that scaling to ensure
+    # it still throws RuntimeError even at higher recursion limits
+    compile("()" * (10 * sys.getrecursionlimit()), "<single>", "single")
+
 def check_limit(n, test_func_name):
     sys.setrecursionlimit(n)
     if test_func_name.startswith("test_"):
@@ -117,5 +123,6 @@ if __name__ == '__main__':
         check_limit(limit, "test_getattr")
         check_limit(limit, "test_getitem")
         check_limit(limit, "test_cpickle")
+        check_limit(limit, "test_compiler_recursion")
         print("Limit of %d is fine" % limit)
         limit = limit + 100