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 | 79c9ff9fed502247bd438f5f08950a3bee35d1b3 (patch) | |
tree | cf13ebf5797823d10eb63c95e158f72485e984b5 /test/test_coverage.py | |
parent | 491f52f6acb7cc9ae8cbc3d2ef138eec758da38f (diff) | |
download | python-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.py | 31 |
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() |