From 79c9ff9fed502247bd438f5f08950a3bee35d1b3 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 23 Jun 2009 21:19:00 -0400 Subject: Remove the fixed limit on recursion depth. Fixes issue #9. --- test/test_coverage.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'test/test_coverage.py') 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() -- cgit v1.2.1