##// END OF EJS Templates
Remove shimmodule IPython.config Deprecated since IPython 4.0...
Remove shimmodule IPython.config Deprecated since IPython 4.0 This should not be relied upon as this was deprecated Python 3.6 was not released yet.

File last commit:

r25049:e8d8a60c
r27211:2c1125bc
Show More
test_debug_magic.py
78 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("")
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()