summaryrefslogtreecommitdiff
path: root/Lib/test/test_inspect.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_inspect.py')
-rw-r--r--Lib/test/test_inspect.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index c55efd6942..350d5dbd77 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -3554,6 +3554,19 @@ class TestSignatureDefinitions(unittest.TestCase):
self.assertIsNone(obj.__text_signature__)
+class NTimesUnwrappable:
+ def __init__(self, n):
+ self.n = n
+ self._next = None
+
+ @property
+ def __wrapped__(self):
+ if self.n <= 0:
+ raise Exception("Unwrapped too many times")
+ if self._next is None:
+ self._next = NTimesUnwrappable(self.n - 1)
+ return self._next
+
class TestUnwrap(unittest.TestCase):
def test_unwrap_one(self):
@@ -3609,6 +3622,11 @@ class TestUnwrap(unittest.TestCase):
__wrapped__ = func
self.assertIsNone(inspect.unwrap(C()))
+ def test_recursion_limit(self):
+ obj = NTimesUnwrappable(sys.getrecursionlimit() + 1)
+ with self.assertRaisesRegex(ValueError, 'wrapper loop'):
+ inspect.unwrap(obj)
+
class TestMain(unittest.TestCase):
def test_only_source(self):
module = importlib.import_module('unittest')