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
commit6fe58fb557567dc4502c62f7f865a33cefbf4374 (patch)
treea3cdebc133ae8478944143842afe7f22e3f72dff /test/test_coverage.py
parent7e1205ef7710cb828289d3fb46258805b57f3b70 (diff)
downloadpython-coveragepy-git-6fe58fb557567dc4502c62f7f865a33cefbf4374.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 f619eaaf..a3886d2c 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()