##// END OF EJS Templates
Merging -r 1196 from lp:ipython....
Merging -r 1196 from lp:ipython. A couple of issues came up: * Some tests in testing and frontend rely on twisted, but are being tested with nose. This is bad! We currently have hackish logic in iptest to skip these if twisted is not installed, but if it is we are testing them with nose! * Some modules (engineservice, kernel/error, newserialized) have nose skip logic even though they should never be tested with nose. * When trial is run on testStrictDict we get an uncaught error. testStrictDict ... ERROR: An unexpected error occurred while tokenizing input The following traceback may be corrupted or invalid The error message is: ('EOF in multi-line statement', (37, 0))

File last commit:

r1960:51f38f50
r2150:b44b6920 merge
Show More
test_process.py
67 lines | 1.7 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""
Test process execution and IO redirection.
"""
__docformat__ = "restructuredtext en"
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2009 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.
#-----------------------------------------------------------------------------
from cStringIO import StringIO
from time import sleep
import sys
from IPython.frontend.process import PipedProcess
from IPython.testing import decorators as testdec
def test_capture_out():
""" A simple test to see if we can execute a process and get the output.
"""
s = StringIO()
p = PipedProcess('echo 1', out_callback=s.write, )
p.start()
p.join()
result = s.getvalue().rstrip()
assert result == '1'
def test_io():
""" Checks that we can send characters on stdin to the process.
"""
s = StringIO()
p = PipedProcess(sys.executable + ' -c "a = raw_input(); print a"',
out_callback=s.write, )
p.start()
test_string = '12345\n'
while not hasattr(p, 'process'):
sleep(0.1)
p.process.stdin.write(test_string)
p.join()
result = s.getvalue()
assert result == test_string
def test_kill():
""" Check that we can kill a process, and its subprocess.
"""
s = StringIO()
p = PipedProcess(sys.executable + ' -c "a = raw_input();"',
out_callback=s.write, )
p.start()
while not hasattr(p, 'process'):
sleep(0.1)
p.process.kill()
assert p.process.poll() is not None
if __name__ == '__main__':
test_capture_out()
test_io()
test_kill()