##// END OF EJS Templates
Code for the less magic was unnecessarily reading the entire input file twice. Redundant read removed.
Code for the less magic was unnecessarily reading the entire input file twice. Redundant read removed.

File last commit:

r18037:ac835403
r19624:8d378a70
Show More
test_console.py
78 lines | 2.2 KiB | text/x-python | PythonLexer
MinRK
add single two-process terminal test
r5630 """Tests for two-process terminal frontend
MinRK
use `python -m IPython` in test_console as well
r11357 Currently only has the most simple test possible, starting a console and running
MinRK
add single two-process terminal test
r5630 a single command.
Authors:
* Min RK
"""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
MinRK
use `python -m IPython` in test_console as well
r11357 import sys
MinRK
add single two-process terminal test
r5630
from nose import SkipTest
MinRK
test that `-h` and `--help-all` work for various IPython entry points...
r12354 import IPython.testing.tools as tt
MinRK
add single two-process terminal test
r5630 from IPython.testing import decorators as dec
#-----------------------------------------------------------------------------
MinRK
test that `-h` and `--help-all` work for various IPython entry points...
r12354 # Tests
MinRK
add single two-process terminal test
r5630 #-----------------------------------------------------------------------------
@dec.skip_win32
def test_console_starts():
"""test that `ipython console` starts a terminal"""
Paul Ivanov
refactor starting and stopping pexpect
r13819 p, pexpect, t = start_console()
MinRK
add single two-process terminal test
r5630 p.sendline('5')
MinRK
single timeout value for pexepect in test_console
r11796 idx = p.expect([r'Out\[\d+\]: 5', pexpect.EOF], timeout=t)
idx = p.expect([r'In \[\d+\]', pexpect.EOF], timeout=t)
Paul Ivanov
refactor starting and stopping pexpect
r13819 stop_console(p, pexpect, t)
MinRK
test that `-h` and `--help-all` work for various IPython entry points...
r12354
def test_help_output():
"""ipython console --help-all works"""
tt.help_all_output_test('console')
Paul Ivanov
test for text/plain display handling in console
r13818
def test_display_text():
"Ensure display protocol plain/text key is supported"
# equivalent of:
#
# x = %lsmagic
# from IPython.display import display; display(x);
Paul Ivanov
refactor starting and stopping pexpect
r13819 p, pexpect, t = start_console()
p.sendline('x = %lsmagic')
idx = p.expect([r'In \[\d+\]', pexpect.EOF], timeout=t)
p.sendline('from IPython.display import display; display(x);')
p.expect([r'Available line magics:', pexpect.EOF], timeout=t)
stop_console(p, pexpect, t)
def stop_console(p, pexpect, t):
"Stop a running `ipython console` running via pexpect"
# send ctrl-D;ctrl-D to exit
p.sendeof()
p.sendeof()
p.expect([pexpect.EOF, pexpect.TIMEOUT], timeout=t)
if p.isalive():
p.terminate()
Paul Ivanov
test for text/plain display handling in console
r13818
Paul Ivanov
refactor starting and stopping pexpect
r13819 def start_console():
"Start `ipython console` using pexpect"
Paul Ivanov
test for text/plain display handling in console
r13818 from IPython.external import pexpect
Matthias Bussonnier
drop some 2.6 hacks
r18037 args = ['-m', 'IPython', 'console', '--colors=NoColor']
cmd = sys.executable
Paul Ivanov
test for text/plain display handling in console
r13818
try:
p = pexpect.spawn(cmd, args=args)
except IOError:
raise SkipTest("Couldn't find command %s" % cmd)
# timeout after one minute
t = 60
idx = p.expect([r'In \[\d+\]', pexpect.EOF], timeout=t)
Paul Ivanov
refactor starting and stopping pexpect
r13819 return p, pexpect, t