##// END OF EJS Templates
Fixing misc testing related things.
Fixing misc testing related things.

File last commit:

r1960:51f38f50
r1960:51f38f50
Show More
test_redirectors.py
70 lines | 2.0 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""
Test the output capture at the OS level, using file descriptors.
"""
__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.
#-------------------------------------------------------------------------------
# Tell nose to skip this module
__test__ = {}
import os
from cStringIO import StringIO
from IPython.testing import decorators as dec
#-----------------------------------------------------------------------------
# Test functions
@dec.skip_win32
def test_redirector():
""" Checks that the redirector can be used to do synchronous capture.
"""
from IPython.kernel.core.fd_redirector import FDRedirector
r = FDRedirector()
out = StringIO()
try:
r.start()
for i in range(10):
os.system('echo %ic' % i)
print >>out, r.getvalue(),
print >>out, i
except:
r.stop()
raise
r.stop()
result1 = out.getvalue()
result2 = "".join("%ic\n%i\n" %(i, i) for i in range(10))
assert result1 == result2
@dec.skip_win32
def test_redirector_output_trap():
""" This test check not only that the redirector_output_trap does
trap the output, but also that it does it in a gready way, that
is by calling the callback ASAP.
"""
from IPython.kernel.core.redirector_output_trap import RedirectorOutputTrap
out = StringIO()
trap = RedirectorOutputTrap(out.write, out.write)
try:
trap.set()
for i in range(10):
os.system('echo %ic' % i)
print "%ip" % i
print >>out, i
except:
trap.unset()
raise
trap.unset()
result1 = out.getvalue()
result2 = "".join("%ic\n%ip\n%i\n" %(i, i, i) for i in range(10))
assert result1 == result2