test_console.py
57 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
MinRK
|
r5630 | """Tests for two-process terminal frontend | ||
MinRK
|
r11357 | Currently only has the most simple test possible, starting a console and running | ||
MinRK
|
r5630 | a single command. | ||
Authors: | ||||
* Min RK | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
MinRK
|
r11357 | import sys | ||
MinRK
|
r5630 | import time | ||
import nose.tools as nt | ||||
from nose import SkipTest | ||||
from IPython.testing import decorators as dec | ||||
from IPython.utils import py3compat | ||||
#----------------------------------------------------------------------------- | ||||
# Test functions begin | ||||
#----------------------------------------------------------------------------- | ||||
@dec.skip_win32 | ||||
def test_console_starts(): | ||||
"""test that `ipython console` starts a terminal""" | ||||
from IPython.external import pexpect | ||||
MinRK
|
r11358 | args = ['console', '--colors=NoColor'] | ||
# FIXME: remove workaround for 2.6 support | ||||
if sys.version_info[:2] > (2,6): | ||||
args = ['-m', 'IPython'] + args | ||||
cmd = sys.executable | ||||
else: | ||||
cmd = 'ipython' | ||||
try: | ||||
p = pexpect.spawn(cmd, args=args) | ||||
except IOError: | ||||
raise SkipTest("Couldn't find command %s" % cmd) | ||||
MinRK
|
r11796 | # timeout after one minute | ||
t = 60 | ||||
idx = p.expect([r'In \[\d+\]', pexpect.EOF], timeout=t) | ||||
MinRK
|
r5630 | p.sendline('5') | ||
MinRK
|
r11796 | idx = p.expect([r'Out\[\d+\]: 5', pexpect.EOF], timeout=t) | ||
idx = p.expect([r'In \[\d+\]', pexpect.EOF], timeout=t) | ||||
MinRK
|
r5630 | # send ctrl-D;ctrl-D to exit | ||
p.sendeof() | ||||
p.sendeof() | ||||
MinRK
|
r11796 | p.expect([pexpect.EOF, pexpect.TIMEOUT], timeout=t) | ||
MinRK
|
r5630 | if p.isalive(): | ||
p.terminate() | ||||