diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-06-23 21:19:00 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-06-23 21:19:00 -0400 |
commit | 6fe58fb557567dc4502c62f7f865a33cefbf4374 (patch) | |
tree | a3cdebc133ae8478944143842afe7f22e3f72dff /test/test_coverage.py | |
parent | 7e1205ef7710cb828289d3fb46258805b57f3b70 (diff) | |
download | python-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.py | 31 |
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() |