import unittest
import sys
+from test import support
\f
def test_subclass_recursion_limit(self):
# make sure that issubclass raises RecursionError before the C stack is
# blown
- self.assertRaises(RecursionError, blowstack, issubclass, str, str)
+ with support.infinite_recursion():
+ self.assertRaises(RecursionError, blowstack, issubclass, str, str)
def test_isinstance_recursion_limit(self):
# make sure that issubclass raises RecursionError before the C stack is
# blown
- self.assertRaises(RecursionError, blowstack, isinstance, '', str)
+ with support.infinite_recursion():
+ self.assertRaises(RecursionError, blowstack, isinstance, '', str)
def test_issubclass_refcount_handling(self):
# bpo-39382: abstract_issubclass() didn't hold item reference while
@property
def __bases__(self):
return self.__bases__
-
- self.assertRaises(RecursionError, issubclass, X(), int)
- self.assertRaises(RecursionError, issubclass, int, X())
- self.assertRaises(RecursionError, isinstance, 1, X())
+ with support.infinite_recursion():
+ self.assertRaises(RecursionError, issubclass, X(), int)
+ self.assertRaises(RecursionError, issubclass, int, X())
+ self.assertRaises(RecursionError, isinstance, 1, X())
def test_infinite_recursion_via_bases_tuple(self):
"""Regression test for bpo-30570."""
class Failure(object):
def __getattr__(self, attr):
return (self, None)
-
- with self.assertRaises(RecursionError):
- issubclass(Failure(), int)
+ with support.infinite_recursion():
+ with self.assertRaises(RecursionError):
+ issubclass(Failure(), int)
def test_infinite_cycle_in_bases(self):
"""Regression test for bpo-30570."""
@property
def __bases__(self):
return (self, self, self)
- self.assertRaises(RecursionError, issubclass, X(), int)
+ with support.infinite_recursion():
+ self.assertRaises(RecursionError, issubclass, X(), int)
def test_infinitely_many_bases(self):
"""Regression test for bpo-30570."""
pass
A.__getattr__ = B.__getattr__ = X.__getattr__
return (A(), B())
- self.assertRaises(RecursionError, issubclass, X(), int)
+ with support.infinite_recursion():
+ self.assertRaises(RecursionError, issubclass, X(), int)
def blowstack(fxn, arg, compare_to):