##// END OF EJS Templates
ENH: Add configuration for profiling completions....
ENH: Add configuration for profiling completions. Adds two new configurable attributes to IPCompleter to enable profiling of the completion subsystem. - IPCompleter.profile_completions, a boolean indicating whether we should profile completions. Default is False. - IPCompleter.profiler_output_dir, a string indicating the directory where profiling data should be written. Default is '.completion_profiles'.

File last commit:

r25335:5a8935c7
r25693:3792cd3d
Show More
test_io.py
89 lines | 2.5 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""Tests for io.py"""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import sys
from io import StringIO
from subprocess import Popen, PIPE
import unittest
import nose.tools as nt
from IPython.utils.io import IOStream, Tee, capture_output
def test_tee_simple():
"Very simple check with stdout only"
chan = StringIO()
text = 'Hello'
tee = Tee(chan, channel='stdout')
print(text, file=chan)
nt.assert_equal(chan.getvalue(), text+"\n")
class TeeTestCase(unittest.TestCase):
def tchan(self, channel):
trap = StringIO()
chan = StringIO()
text = 'Hello'
std_ori = getattr(sys, channel)
setattr(sys, channel, trap)
tee = Tee(chan, channel=channel)
print(text, end='', file=chan)
trap_val = trap.getvalue()
nt.assert_equal(chan.getvalue(), text)
tee.close()
setattr(sys, channel, std_ori)
assert getattr(sys, channel) == std_ori
def test(self):
for chan in ['stdout', 'stderr']:
self.tchan(chan)
def test_io_init():
"""Test that io.stdin/out/err exist at startup"""
for name in ('stdin', 'stdout', 'stderr'):
cmd = "from IPython.utils import io;print(io.%s.__class__)"%name
with Popen([sys.executable, '-c', cmd], stdout=PIPE) as p:
p.wait()
classname = p.stdout.read().strip().decode('ascii')
# __class__ is a reference to the class object in Python 3, so we can't
# just test for string equality.
assert 'IPython.utils.io.IOStream' in classname, classname
class TestIOStream(unittest.TestCase):
def test_IOStream_init(self):
"""IOStream initializes from a file-like object missing attributes. """
# Cause a failure from getattr and dir(). (Issue #6386)
class BadStringIO(StringIO):
def __dir__(self):
attrs = super().__dir__()
attrs.append('name')
return attrs
with self.assertWarns(DeprecationWarning):
iostream = IOStream(BadStringIO())
iostream.write('hi, bad iostream\n')
assert not hasattr(iostream, 'name')
iostream.close()
def test_capture_output(self):
"""capture_output() context works"""
with capture_output() as io:
print('hi, stdout')
print('hi, stderr', file=sys.stderr)
nt.assert_equal(io.stdout, 'hi, stdout\n')
nt.assert_equal(io.stderr, 'hi, stderr\n')