5
5
import unittest
6
6
import sys
7
7
import typing
8
+ from test import support
8
9
9
10
10
11
@@ -266,12 +267,14 @@ def test_subclass_tuple(self):
266
267
def test_subclass_recursion_limit (self ):
267
268
# make sure that issubclass raises RecursionError before the C stack is
268
269
# blown
269
- self .assertRaises (RecursionError , blowstack , issubclass , str , str )
270
+ with support .infinite_recursion ():
271
+ self .assertRaises (RecursionError , blowstack , issubclass , str , str )
270
272
271
273
def test_isinstance_recursion_limit (self ):
272
274
# make sure that issubclass raises RecursionError before the C stack is
273
275
# blown
274
- self .assertRaises (RecursionError , blowstack , isinstance , '' , str )
276
+ with support .infinite_recursion ():
277
+ self .assertRaises (RecursionError , blowstack , isinstance , '' , str )
275
278
276
279
def test_subclass_with_union (self ):
277
280
self .assertTrue (issubclass (int , int | float | int ))
@@ -308,27 +311,28 @@ class X:
308
311
@property
309
312
def __bases__ (self ):
310
313
return self .__bases__
311
-
312
- self .assertRaises (RecursionError , issubclass , X (), int )
313
- self .assertRaises (RecursionError , issubclass , int , X ())
314
- self .assertRaises (RecursionError , isinstance , 1 , X ())
314
+ with support . infinite_recursion ():
315
+ self .assertRaises (RecursionError , issubclass , X (), int )
316
+ self .assertRaises (RecursionError , issubclass , int , X ())
317
+ self .assertRaises (RecursionError , isinstance , 1 , X ())
315
318
316
319
def test_infinite_recursion_via_bases_tuple (self ):
317
320
"""Regression test for bpo-30570."""
318
321
class Failure (object ):
319
322
def __getattr__ (self , attr ):
320
323
return (self , None )
321
-
322
- with self .assertRaises (RecursionError ):
323
- issubclass (Failure (), int )
324
+ with support . infinite_recursion ():
325
+ with self .assertRaises (RecursionError ):
326
+ issubclass (Failure (), int )
324
327
325
328
def test_infinite_cycle_in_bases (self ):
326
329
"""Regression test for bpo-30570."""
327
330
class X :
328
331
@property
329
332
def __bases__ (self ):
330
333
return (self , self , self )
331
- self .assertRaises (RecursionError , issubclass , X (), int )
334
+ with support .infinite_recursion ():
335
+ self .assertRaises (RecursionError , issubclass , X (), int )
332
336
333
337
def test_infinitely_many_bases (self ):
334
338
"""Regression test for bpo-30570."""
@@ -341,7 +345,8 @@ class B:
341
345
pass
342
346
A .__getattr__ = B .__getattr__ = X .__getattr__
343
347
return (A (), B ())
344
- self .assertRaises (RecursionError , issubclass , X (), int )
348
+ with support .infinite_recursion ():
349
+ self .assertRaises (RecursionError , issubclass , X (), int )
345
350
346
351
347
352
def blowstack (fxn , arg , compare_to ):
0 commit comments