test_redirectors.py
61 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
gvaroquaux
|
r1456 | # encoding: utf-8 | ||
Gael Varoquaux
|
r1422 | """ | ||
Test the output capture at the OS level, using file descriptors. | ||||
""" | ||||
gvaroquaux
|
r1456 | __docformat__ = "restructuredtext en" | ||
Gael Varoquaux
|
r1457 | #------------------------------------------------------------------------------- | ||
# 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. | ||||
#------------------------------------------------------------------------------- | ||||
gvaroquaux
|
r1456 | |||
Gael Varoquaux
|
r1422 | import os | ||
from cStringIO import StringIO | ||||
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() | ||||
assert out.getvalue() == "".join("%ic\n%i\n" %(i, i) for i in range(10)) | ||||
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 | ||||
gvaroquaux
|
r1460 | is by calling the callback ASAP. | ||
Gael Varoquaux
|
r1422 | """ | ||
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() | ||||
assert out.getvalue() == "".join("%ic\n%ip\n%i\n" %(i, i, i) | ||||
for i in range(10)) | ||||
Gael Varoquaux
|
r1457 | |||
Gael Varoquaux
|
r1422 | |||