summaryrefslogtreecommitdiff
path: root/test/test_coverage.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-06-23 21:19:00 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-06-23 21:19:00 -0400
commit79c9ff9fed502247bd438f5f08950a3bee35d1b3 (patch)
treecf13ebf5797823d10eb63c95e158f72485e984b5 /test/test_coverage.py
parent491f52f6acb7cc9ae8cbc3d2ef138eec758da38f (diff)
downloadpython-coveragepy-79c9ff9fed502247bd438f5f08950a3bee35d1b3.tar.gz
Remove the fixed limit on recursion depth. Fixes issue #9.
Diffstat (limited to 'test/test_coverage.py')
-rw-r--r--test/test_coverage.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/test_coverage.py b/test/test_coverage.py
index f619eaa..a3886d2 100644
--- a/test/test_coverage.py
+++ b/test/test_coverage.py
@@ -1667,6 +1667,37 @@ class ProcessTest(CoverageTest):
self.assertEqual(data.summary()['b_or_c.py'], 7)
+class RecursionTest(CoverageTest):
+ """Check what happens when recursive code gets near limits."""
+
+ def testShortRecursion(self):
+ # We can definitely get close to 500 stack frames.
+ self.checkCoverage("""\
+ def recur(n):
+ if n == 0:
+ return 0
+ else:
+ return recur(n-1)+1
+
+ recur(495) # We can get at least this many stack frames.
+ """,
+ [1,2,3,5,7], "")
+
+ def xxtestLongRecursion(self):
+ # We can't finish a very deep recursion, but we don't crash.
+ self.assertRaises(RuntimeError, self.checkCoverage,
+ """\
+ def recur(n):
+ if n == 0:
+ return 0
+ else:
+ return recur(n-1)+1
+
+ recur(100000) # This is definitely too many frames.
+ """,
+ [1,2,3,5,7], "")
+
+
if __name__ == '__main__':
print "Testing under Python version: %s" % sys.version
unittest.main()