Skip to content

Commit 87289fd

Browse files
authored
Update tests with deprecated get_c_recursion_limit (RustPython#7039)
1 parent bff70f9 commit 87289fd

6 files changed

Lines changed: 28 additions & 29 deletions

File tree

Lib/test/list_tests.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from functools import cmp_to_key
77

88
from test import seq_tests
9-
from test.support import ALWAYS_EQ, NEVER_EQ, get_c_recursion_limit
9+
from test.support import ALWAYS_EQ, NEVER_EQ
10+
from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow
1011

1112

1213
class CommonTest(seq_tests.CommonTest):
@@ -59,9 +60,11 @@ def test_repr(self):
5960
self.assertEqual(str(a2), "[0, 1, 2, [...], 3]")
6061
self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]")
6162

63+
@skip_wasi_stack_overflow()
64+
@skip_emscripten_stack_overflow()
6265
def test_repr_deep(self):
6366
a = self.type2test([])
64-
for i in range(get_c_recursion_limit() + 1):
67+
for i in range(200_000):
6568
a = self.type2test([a])
6669
self.assertRaises(RecursionError, repr, a)
6770

Lib/test/seq_tests.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,7 @@ def test_pickle(self):
426426
self.assertEqual(lst2, lst)
427427
self.assertNotEqual(id(lst2), id(lst))
428428

429-
@unittest.expectedFailure # TODO: RUSTPYTHON
430-
@support.suppress_immortalization()
429+
@unittest.expectedFailure # TODO: RUSTPYTHON
431430
def test_free_after_iterating(self):
432431
support.check_free_after_iterating(self, iter, self.type2test)
433432
support.check_free_after_iterating(self, reversed, self.type2test)

Lib/test/support/__init__.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2763,15 +2763,6 @@ def adjust_int_max_str_digits(max_digits):
27632763
sys.set_int_max_str_digits(current)
27642764

27652765

2766-
# XXX: RUSTPYTHON; removed in 3.14
2767-
def get_c_recursion_limit():
2768-
try:
2769-
import _testcapi
2770-
return _testcapi.Py_C_RECURSION_LIMIT
2771-
except ImportError:
2772-
raise unittest.SkipTest('requires _testcapi')
2773-
2774-
27752766
def exceeds_recursion_limit():
27762767
"""For recursion tests, easily exceeds default recursion limit."""
27772768
return 150_000

Lib/test/test_dictviews.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import copy
33
import pickle
44
import unittest
5-
from test.support import get_c_recursion_limit
5+
from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow, exceeds_recursion_limit
66

77
class DictSetTest(unittest.TestCase):
88

@@ -277,11 +277,12 @@ def test_recursive_repr(self):
277277
# Again.
278278
self.assertIsInstance(r, str)
279279

280-
# TODO: RUSTPYTHON
281-
@unittest.expectedFailure
280+
@unittest.skip("TODO: RUSTPYTHON; segfault")
281+
@skip_wasi_stack_overflow()
282+
@skip_emscripten_stack_overflow()
282283
def test_deeply_nested_repr(self):
283284
d = {}
284-
for i in range(get_c_recursion_limit()//2 + 100):
285+
for i in range(exceeds_recursion_limit()):
285286
d = {42: d.values()}
286287
self.assertRaises(RecursionError, repr, d)
287288

@@ -291,8 +292,7 @@ def test_copy(self):
291292
self.assertRaises(TypeError, copy.copy, d.values())
292293
self.assertRaises(TypeError, copy.copy, d.items())
293294

294-
# TODO: RUSTPYTHON
295-
@unittest.expectedFailure
295+
@unittest.expectedFailure # TODO: RUSTPYTHON
296296
def test_compare_error(self):
297297
class Exc(Exception):
298298
pass

Lib/test/test_exception_group.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import collections.abc
22
import types
33
import unittest
4-
from test.support import get_c_recursion_limit
4+
from test.support import skip_emscripten_stack_overflow, skip_wasi_stack_overflow, exceeds_recursion_limit
55

66
class TestExceptionGroupTypeHierarchy(unittest.TestCase):
77
def test_exception_group_types(self):
8-
self.assertTrue(issubclass(ExceptionGroup, Exception))
9-
self.assertTrue(issubclass(ExceptionGroup, BaseExceptionGroup))
10-
self.assertTrue(issubclass(BaseExceptionGroup, BaseException))
8+
self.assertIsSubclass(ExceptionGroup, Exception)
9+
self.assertIsSubclass(ExceptionGroup, BaseExceptionGroup)
10+
self.assertIsSubclass(BaseExceptionGroup, BaseException)
1111

1212
def test_exception_is_not_generic_type(self):
1313
with self.assertRaisesRegex(TypeError, 'Exception'):
@@ -20,8 +20,7 @@ def test_exception_group_is_generic_type(self):
2020

2121

2222
class BadConstructorArgs(unittest.TestCase):
23-
# TODO: RUSTPYTHON
24-
@unittest.expectedFailure
23+
@unittest.expectedFailure # TODO: RUSTPYTHON
2524
def test_bad_EG_construction__too_many_args(self):
2625
MSG = r'BaseExceptionGroup.__new__\(\) takes exactly 2 arguments'
2726
with self.assertRaisesRegex(TypeError, MSG):
@@ -462,15 +461,21 @@ def test_basics_split_by_predicate__match(self):
462461
class DeepRecursionInSplitAndSubgroup(unittest.TestCase):
463462
def make_deep_eg(self):
464463
e = TypeError(1)
465-
for i in range(get_c_recursion_limit() + 1):
464+
for i in range(exceeds_recursion_limit()):
466465
e = ExceptionGroup('eg', [e])
467466
return e
468467

468+
@unittest.skip("TODO: RUSTPYTHON; Segfault")
469+
@skip_emscripten_stack_overflow()
470+
@skip_wasi_stack_overflow()
469471
def test_deep_split(self):
470472
e = self.make_deep_eg()
471473
with self.assertRaises(RecursionError):
472474
e.split(TypeError)
473475

476+
@unittest.skip("TODO: RUSTPYTHON; Segfault")
477+
@skip_emscripten_stack_overflow()
478+
@skip_wasi_stack_overflow()
474479
def test_deep_subgroup(self):
475480
e = self.make_deep_eg()
476481
with self.assertRaises(RecursionError):
@@ -812,8 +817,8 @@ def test_split_does_not_copy_non_sequence_notes(self):
812817
eg = ExceptionGroup("eg", [ValueError(1), TypeError(2)])
813818
eg.__notes__ = 123
814819
match, rest = eg.split(TypeError)
815-
self.assertFalse(hasattr(match, '__notes__'))
816-
self.assertFalse(hasattr(rest, '__notes__'))
820+
self.assertNotHasAttr(match, '__notes__')
821+
self.assertNotHasAttr(rest, '__notes__')
817822

818823
def test_drive_invalid_return_value(self):
819824
class MyEg(ExceptionGroup):

Lib/test/test_userlist.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ def test_userlist_copy(self):
6868

6969
# Decorate existing test with recursion limit, because
7070
# the test is for C structure, but `UserList` is a Python structure.
71-
test_repr_deep = list_tests.CommonTest.test_repr_deep
71+
# test_repr_deep = list_tests.CommonTest.test_repr_deep
72+
test_repr_deep = unittest.skip(list_tests.CommonTest.test_repr_deep) # TODO: RUSTPYTHON; Segfault
7273

7374
if __name__ == "__main__":
7475
unittest.main()

0 commit comments

Comments
 (0)