Skip to content

Commit c9c8c9f

Browse files
committed
skip stack size check on Windows and WASI
Signed-off-by: Jan André Reuter <j.reuter@fz-juelich.de>
1 parent 11f2eae commit c9c8c9f

File tree

8 files changed

+23
-18
lines changed

8 files changed

+23
-18
lines changed

Lib/test/pickletester.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2438,7 +2438,7 @@ def test_reduce_None(self):
24382438
with self.assertRaises(TypeError):
24392439
self.dumps(c)
24402440

2441-
@support.skip_if_unlimited_stack_size()
2441+
@support.skip_if_unlimited_stack_size
24422442
@no_tracing
24432443
def test_bad_getattr(self):
24442444
# Issue #3514: crash when there is an infinite loop in __getattr__

Lib/test/support/__init__.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1772,7 +1772,7 @@ def skip_if_pgo_task(test):
17721772
return test if ok else unittest.skip(msg)(test)
17731773

17741774

1775-
def skip_if_unlimited_stack_size():
1775+
def skip_if_unlimited_stack_size(test):
17761776
"""
17771777
Skip decorator for tests not run when an unlimited stack size is configured.
17781778
@@ -1781,11 +1781,16 @@ def skip_if_unlimited_stack_size():
17811781
17821782
See gh-143460: Python 3.14/3.15a build aborting due to OOM during test_functools / test_json
17831783
"""
1784+
if is_wasi:
1785+
return test
1786+
if sys.platform.startswith('win'):
1787+
return test
1788+
17841789
import resource
17851790
stack_size = resource.getrlimit(resource.RLIMIT_STACK)
1786-
reason = "Not run due to unlimited stack size"
17871791
unlimited_stack_size_cond = stack_size == (-1, -1) or stack_size == (0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF)
1788-
return unittest.skipIf(unlimited_stack_size_cond, reason)
1792+
reason = "Not run due to unlimited stack size"
1793+
return unittest.skipIf(unlimited_stack_size_cond, reason)(test)
17891794

17901795

17911796
def detect_api_mismatch(ref_api, other_api, *, ignore=()):

Lib/test/test_ast/test_ast.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,7 @@ def next(self):
989989
enum._test_simple_enum(_Precedence, _ast_unparse._Precedence)
990990

991991
@support.cpython_only
992-
@skip_if_unlimited_stack_size()
992+
@skip_if_unlimited_stack_size
993993
@skip_wasi_stack_overflow()
994994
@skip_emscripten_stack_overflow()
995995
def test_ast_recursion_limit(self):
@@ -1128,7 +1128,7 @@ def test_pickling(self):
11281128
ast2 = pickle.loads(pickle.dumps(tree, protocol))
11291129
self.assertEqual(to_tuple(ast2), to_tuple(tree))
11301130

1131-
@skip_if_unlimited_stack_size()
1131+
@skip_if_unlimited_stack_size
11321132
def test_copy_with_parents(self):
11331133
# gh-120108
11341134
code = """
@@ -1976,7 +1976,7 @@ def test_level_as_none(self):
19761976
exec(code, ns)
19771977
self.assertIn('sleep', ns)
19781978

1979-
@skip_if_unlimited_stack_size()
1979+
@skip_if_unlimited_stack_size
19801980
@skip_emscripten_stack_overflow()
19811981
def test_recursion_direct(self):
19821982
e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0, operand=ast.Constant(1))
@@ -1985,7 +1985,7 @@ def test_recursion_direct(self):
19851985
with support.infinite_recursion():
19861986
compile(ast.Expression(e), "<test>", "eval")
19871987

1988-
@skip_if_unlimited_stack_size()
1988+
@skip_if_unlimited_stack_size
19891989
@skip_emscripten_stack_overflow()
19901990
def test_recursion_indirect(self):
19911991
e = ast.UnaryOp(op=ast.Not(), lineno=0, col_offset=0, operand=ast.Constant(1))

Lib/test/test_functools.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ def test_setstate_subclasses(self):
438438
self.assertIs(type(r[0]), tuple)
439439

440440
@support.skip_if_sanitizer("thread sanitizer crashes in __tsan::FuncEntry", thread=True)
441-
@support.skip_if_unlimited_stack_size()
441+
@support.skip_if_unlimited_stack_size
442442
@support.skip_emscripten_stack_overflow()
443443
def test_recursive_pickle(self):
444444
with replaced_module('functools', self.module):
@@ -2140,7 +2140,7 @@ def orig(a: int) -> nonexistent: ...
21402140
@support.skip_on_s390x
21412141
@unittest.skipIf(support.is_wasi, "WASI has limited C stack")
21422142
@support.skip_if_sanitizer("requires deep stack", ub=True, thread=True)
2143-
@support.skip_if_unlimited_stack_size()
2143+
@support.skip_if_unlimited_stack_size
21442144
@support.skip_emscripten_stack_overflow()
21452145
def test_lru_recursion(self):
21462146

Lib/test/test_isinstance.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ def __bases__(self):
317317
self.assertRaises(RecursionError, issubclass, int, X())
318318
self.assertRaises(RecursionError, isinstance, 1, X())
319319

320-
@support.skip_if_unlimited_stack_size()
320+
@support.skip_if_unlimited_stack_size
321321
@support.skip_emscripten_stack_overflow()
322322
@support.skip_wasi_stack_overflow()
323323
def test_infinite_recursion_via_bases_tuple(self):
@@ -329,7 +329,7 @@ def __getattr__(self, attr):
329329
with self.assertRaises(RecursionError):
330330
issubclass(Failure(), int)
331331

332-
@support.skip_if_unlimited_stack_size()
332+
@support.skip_if_unlimited_stack_size
333333
@support.skip_emscripten_stack_overflow()
334334
@support.skip_wasi_stack_overflow()
335335
def test_infinite_cycle_in_bases(self):

Lib/test/test_json/test_recursion.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def default(self, o):
6868
self.fail("didn't raise ValueError on default recursion")
6969

7070

71-
@support.skip_if_unlimited_stack_size()
71+
@support.skip_if_unlimited_stack_size
7272
@support.skip_emscripten_stack_overflow()
7373
@support.skip_wasi_stack_overflow()
7474
def test_highly_nested_objects_decoding(self):
@@ -85,7 +85,7 @@ def test_highly_nested_objects_decoding(self):
8585
with support.infinite_recursion():
8686
self.loads('[' * very_deep + '1' + ']' * very_deep)
8787

88-
@support.skip_if_unlimited_stack_size()
88+
@support.skip_if_unlimited_stack_size
8989
@support.skip_wasi_stack_overflow()
9090
@support.skip_emscripten_stack_overflow()
9191
@support.requires_resource('cpu')
@@ -101,7 +101,7 @@ def test_highly_nested_objects_encoding(self):
101101
with support.infinite_recursion(5000):
102102
self.dumps(d)
103103

104-
@support.skip_if_unlimited_stack_size()
104+
@support.skip_if_unlimited_stack_size
105105
@support.skip_emscripten_stack_overflow()
106106
@support.skip_wasi_stack_overflow()
107107
def test_endless_recursion(self):

Lib/test/test_support.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ def test_recursive(depth, limit):
672672
""")
673673
script_helper.assert_python_ok("-c", code)
674674

675-
@support.skip_if_unlimited_stack_size()
675+
@support.skip_if_unlimited_stack_size
676676
def test_recursion(self):
677677
# Test infinite_recursion() and get_recursion_available() functions.
678678
def recursive_function(depth):

Lib/test/test_tomllib/test_misc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def test_deepcopy(self):
9393
}
9494
self.assertEqual(obj_copy, expected_obj)
9595

96-
@support.skip_if_unlimited_stack_size()
96+
@support.skip_if_unlimited_stack_size
9797
def test_inline_array_recursion_limit(self):
9898
with support.infinite_recursion(max_depth=100):
9999
available = support.get_recursion_available()
@@ -105,7 +105,7 @@ def test_inline_array_recursion_limit(self):
105105
recursive_array_toml = "arr = " + nest_count * "[" + nest_count * "]"
106106
tomllib.loads(recursive_array_toml)
107107

108-
@support.skip_if_unlimited_stack_size()
108+
@support.skip_if_unlimited_stack_size
109109
def test_inline_table_recursion_limit(self):
110110
with support.infinite_recursion(max_depth=100):
111111
available = support.get_recursion_available()

0 commit comments

Comments
 (0)