##// END OF EJS Templates
Fixing a nasty bug in test_frontend.py that was leading to all sorts...
Fixing a nasty bug in test_frontend.py that was leading to all sorts of weird problems with our test suite like random test errors and unhandled errors in Deferreds. There are 3 problems with this test module: 1. Doesn't use twisted.trial.unittest.TestCase as a base class 2. Test methods don't return Deferreds 3. One test method actually has an unhandled error in a Deferred The only thing I have don't is put a @skip decorator on test_error_callback_added_to_execute to hide 3. All of these things still need to be fixed though. But our tests now pass.

File last commit:

r1561:fddc4586
r1614:9dcfcfc5
Show More
test_process.py
67 lines | 1.8 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""
Test process execution and IO redirection.
"""
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008 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'
# FIXME
@testdec.skip("This doesn't work under Windows")
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()