File: test_recursion.py

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (31 lines) | stat: -rw-r--r-- 788 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pytest
import sys

def f():
    try:
        return f()
    except RuntimeError:
        return sys.exc_info()

def do_check():
    f()
    assert sys.exc_info() == (None, None, None)


def recurse(n):
    if n > 0:
        return recurse(n-1)
    else:
        return do_check()

@pytest.mark.skipif(sys.platform == "win32", reason="reliably crashes on windows")
@pytest.mark.skipif(True, reason="fails on py3.10, fills up the logs, and crashes the buildbot summary")
def test_recursion():
    """
    Test that sys.exc_info() is cleared after RecursionError was raised.

    The issue only appeared intermittently, depending on the contents of the
    call stack, hence the need for the recurse() helper to trigger it reliably.
    """
    for i in range(50):
        recurse(i)