##// END OF EJS Templates
Stop monkeypatching `linecache`...
Stop monkeypatching `linecache` It turns out this has never been necessary if we just change the cache entry to forbid expiry in the first place.

File last commit:

r27235:3b816f80
r27845:5a72e3db
Show More
test_debug_magic.py
80 lines | 2.3 KiB | text/x-python | PythonLexer
Matthias Bussonnier
Add test that %depug pass through generators.
r24683 """Test embedding of IPython"""
#-----------------------------------------------------------------------------
# Copyright (C) 2013 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import os
import sys
from IPython.testing.decorators import skip_win32
Miro Hrončok
Tests: Allow setting a custom timeout scale...
r25049 from IPython.testing import IPYTHON_TESTING_TIMEOUT_SCALE
Matthias Bussonnier
Add test that %depug pass through generators.
r24683
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
@skip_win32
def test_debug_magic_passes_through_generators():
"""
This test that we can correctly pass through frames of a generator post-mortem.
"""
import pexpect
import re
Mickaël Schoentgen
Fix several DeprecationWarning: invalid escape sequence...
r24896 in_prompt = re.compile(br'In ?\[\d+\]:')
Matthias Bussonnier
Add test that %depug pass through generators.
r24683 ipdb_prompt = 'ipdb>'
env = os.environ.copy()
child = pexpect.spawn(sys.executable, ['-m', 'IPython', '--colors=nocolor', '--simple-prompt'],
env=env)
Miro Hrončok
Tests: Allow setting a custom timeout scale...
r25049 child.timeout = 15 * IPYTHON_TESTING_TIMEOUT_SCALE
Matthias Bussonnier
Add test that %depug pass through generators.
r24683
child.expect(in_prompt)
Matthias Bussonnier
increase timeout for startup
r24945
Miro Hrončok
Tests: Allow setting a custom timeout scale...
r25049 child.timeout = 2 * IPYTHON_TESTING_TIMEOUT_SCALE
Matthias Bussonnier
increase timeout for startup
r24945
Matthias Bussonnier
Add test that %depug pass through generators.
r24683 child.sendline("def f(x):")
child.sendline(" raise Exception")
child.sendline("")
child.expect(in_prompt)
child.sendline("gen = (f(x) for x in [0])")
child.sendline("")
child.expect(in_prompt)
child.sendline("for x in gen:")
child.sendline(" pass")
child.sendline("")
Nikita Kniazev
Tweak tests for PyPy and add CI runner...
r27235 child.timeout = 10 * IPYTHON_TESTING_TIMEOUT_SCALE
Matthias Bussonnier
Add test that %depug pass through generators.
r24683 child.expect('Exception:')
child.expect(in_prompt)
child.sendline(r'%debug')
child.expect('----> 2 raise Exception')
child.expect(ipdb_prompt)
child.sendline('u')
child.expect_exact(r'----> 1 gen = (f(x) for x in [0])')
child.expect(ipdb_prompt)
child.sendline('u')
child.expect_exact('----> 1 for x in gen:')
child.expect(ipdb_prompt)
child.sendline('u')
child.expect_exact('*** Oldest frame')
child.expect(ipdb_prompt)
child.sendline('exit')
child.expect(in_prompt)
child.sendline('exit')
child.close()