@@ -263,17 +263,19 @@ def test_subclass_tuple(self):
263263 self .assertEqual (True , issubclass (int , (int , (float , int ))))
264264 self .assertEqual (True , issubclass (str , (str , (Child , str ))))
265265
266+ @support .skip_wasi_stack_overflow ()
267+ @support .skip_emscripten_stack_overflow ()
266268 def test_subclass_recursion_limit (self ):
267269 # make sure that issubclass raises RecursionError before the C stack is
268270 # blown
269- with support .infinite_recursion ():
270- self .assertRaises (RecursionError , blowstack , issubclass , str , str )
271+ self .assertRaises (RecursionError , blowstack , issubclass , str , str )
271272
273+ @support .skip_wasi_stack_overflow ()
274+ @support .skip_emscripten_stack_overflow ()
272275 def test_isinstance_recursion_limit (self ):
273276 # make sure that issubclass raises RecursionError before the C stack is
274277 # blown
275- with support .infinite_recursion ():
276- self .assertRaises (RecursionError , blowstack , isinstance , '' , str )
278+ self .assertRaises (RecursionError , blowstack , isinstance , '' , str )
277279
278280 def test_subclass_with_union (self ):
279281 self .assertTrue (issubclass (int , int | float | int ))
@@ -315,6 +317,9 @@ def __bases__(self):
315317 self .assertRaises (RecursionError , issubclass , int , X ())
316318 self .assertRaises (RecursionError , isinstance , 1 , X ())
317319
320+ @support .skip_if_unlimited_stack_size
321+ @support .skip_emscripten_stack_overflow ()
322+ @support .skip_wasi_stack_overflow ()
318323 def test_infinite_recursion_via_bases_tuple (self ):
319324 """Regression test for bpo-30570."""
320325 class Failure (object ):
@@ -324,6 +329,9 @@ def __getattr__(self, attr):
324329 with self .assertRaises (RecursionError ):
325330 issubclass (Failure (), int )
326331
332+ @support .skip_if_unlimited_stack_size
333+ @support .skip_emscripten_stack_overflow ()
334+ @support .skip_wasi_stack_overflow ()
327335 def test_infinite_cycle_in_bases (self ):
328336 """Regression test for bpo-30570."""
329337 class X :
@@ -352,8 +360,9 @@ def blowstack(fxn, arg, compare_to):
352360 # Make sure that calling isinstance with a deeply nested tuple for its
353361 # argument will raise RecursionError eventually.
354362 tuple_arg = (compare_to ,)
355- for cnt in range (support .exceeds_recursion_limit ()):
356- tuple_arg = (tuple_arg ,)
363+ while True :
364+ for _ in range (100 ):
365+ tuple_arg = (tuple_arg ,)
357366 fxn (arg , tuple_arg )
358367
359368
0 commit comments