4
4
5
5
import unittest
6
6
import sys
7
+ from test import support
7
8
8
9
9
10
@@ -244,12 +245,14 @@ def test_subclass_tuple(self):
244
245
def test_subclass_recursion_limit (self ):
245
246
# make sure that issubclass raises RecursionError before the C stack is
246
247
# blown
247
- self .assertRaises (RecursionError , blowstack , issubclass , str , str )
248
+ with support .infinite_recursion ():
249
+ self .assertRaises (RecursionError , blowstack , issubclass , str , str )
248
250
249
251
def test_isinstance_recursion_limit (self ):
250
252
# make sure that issubclass raises RecursionError before the C stack is
251
253
# blown
252
- self .assertRaises (RecursionError , blowstack , isinstance , '' , str )
254
+ with support .infinite_recursion ():
255
+ self .assertRaises (RecursionError , blowstack , isinstance , '' , str )
253
256
254
257
def test_issubclass_refcount_handling (self ):
255
258
# bpo-39382: abstract_issubclass() didn't hold item reference while
@@ -276,27 +279,28 @@ class X:
276
279
@property
277
280
def __bases__ (self ):
278
281
return self .__bases__
279
-
280
- self .assertRaises (RecursionError , issubclass , X (), int )
281
- self .assertRaises (RecursionError , issubclass , int , X ())
282
- self .assertRaises (RecursionError , isinstance , 1 , X ())
282
+ with support . infinite_recursion ():
283
+ self .assertRaises (RecursionError , issubclass , X (), int )
284
+ self .assertRaises (RecursionError , issubclass , int , X ())
285
+ self .assertRaises (RecursionError , isinstance , 1 , X ())
283
286
284
287
def test_infinite_recursion_via_bases_tuple (self ):
285
288
"""Regression test for bpo-30570."""
286
289
class Failure (object ):
287
290
def __getattr__ (self , attr ):
288
291
return (self , None )
289
-
290
- with self .assertRaises (RecursionError ):
291
- issubclass (Failure (), int )
292
+ with support . infinite_recursion ():
293
+ with self .assertRaises (RecursionError ):
294
+ issubclass (Failure (), int )
292
295
293
296
def test_infinite_cycle_in_bases (self ):
294
297
"""Regression test for bpo-30570."""
295
298
class X :
296
299
@property
297
300
def __bases__ (self ):
298
301
return (self , self , self )
299
- self .assertRaises (RecursionError , issubclass , X (), int )
302
+ with support .infinite_recursion ():
303
+ self .assertRaises (RecursionError , issubclass , X (), int )
300
304
301
305
def test_infinitely_many_bases (self ):
302
306
"""Regression test for bpo-30570."""
@@ -309,7 +313,8 @@ class B:
309
313
pass
310
314
A .__getattr__ = B .__getattr__ = X .__getattr__
311
315
return (A (), B ())
312
- self .assertRaises (RecursionError , issubclass , X (), int )
316
+ with support .infinite_recursion ():
317
+ self .assertRaises (RecursionError , issubclass , X (), int )
313
318
314
319
315
320
def blowstack (fxn , arg , compare_to ):
0 commit comments