##// END OF EJS Templates
update mode on rename
update mode on rename

File last commit:

r18104:5af32843
r19321:faac5da9
Show More
test_kernel.py
82 lines | 2.5 KiB | text/x-python | PythonLexer
MinRK
msgspec 5: stream.data -> stream.text
r18104 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475
from __future__ import print_function
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482 import sys
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475 import unittest
MinRK
update inprocess kernel to new layout...
r10298 from IPython.kernel.inprocess.blocking import BlockingInProcessKernelClient
from IPython.kernel.inprocess.manager import InProcessKernelManager
MinRK
move IPython.inprocess to IPython.kernel.inprocess
r9375 from IPython.kernel.inprocess.ipkernel import InProcessKernel
epatters
TST: Skip pylab test for in-process kernel when matplotlib is missing.
r8493 from IPython.testing.decorators import skipif_not_matplotlib
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475 from IPython.utils.io import capture_output
Pietro Berkes
BUG: In inprocess tests, use input/raw_input depending on Python version.
r8941 from IPython.utils import py3compat
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475
Thomas Kluyver
Use StringIO.StringIO on Python 2....
r13366 if py3compat.PY3:
from io import StringIO
else:
from StringIO import StringIO
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475
class InProcessKernelTestCase(unittest.TestCase):
MinRK
update inprocess kernel to new layout...
r10298 def setUp(self):
self.km = InProcessKernelManager()
self.km.start_kernel()
self.kc = BlockingInProcessKernelClient(kernel=self.km.kernel)
self.kc.start_channels()
epatters
TST: Skip pylab test for in-process kernel when matplotlib is missing.
r8493 @skipif_not_matplotlib
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475 def test_pylab(self):
MinRK
msgspec 5: stream.data -> stream.text
r18104 """Does %pylab work in the in-process kernel?"""
MinRK
update inprocess kernel to new layout...
r10298 kc = self.kc
kc.execute('%pylab')
msg = get_stream_message(kc)
MinRK
msgspec 5: stream.data -> stream.text
r18104 self.assertIn('matplotlib', msg['content']['text'])
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482 def test_raw_input(self):
""" Does the in-process kernel handle raw_input correctly?
"""
io = StringIO('foobar\n')
sys_stdin = sys.stdin
sys.stdin = io
try:
Pietro Berkes
BUG: In inprocess tests, use input/raw_input depending on Python version.
r8941 if py3compat.PY3:
MinRK
update inprocess kernel to new layout...
r10298 self.kc.execute('x = input()')
Pietro Berkes
BUG: In inprocess tests, use input/raw_input depending on Python version.
r8941 else:
MinRK
update inprocess kernel to new layout...
r10298 self.kc.execute('x = raw_input()')
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482 finally:
sys.stdin = sys_stdin
MinRK
update inprocess kernel to new layout...
r10298 self.assertEqual(self.km.kernel.shell.user_ns.get('x'), 'foobar')
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475 def test_stdout(self):
""" Does the in-process kernel correctly capture IO?
"""
kernel = InProcessKernel()
with capture_output() as io:
kernel.shell.run_cell('print("foo")')
self.assertEqual(io.stdout, 'foo\n')
MinRK
update inprocess kernel to new layout...
r10298 kc = BlockingInProcessKernelClient(kernel=kernel)
kernel.frontends.append(kc)
kc.shell_channel.execute('print("bar")')
msg = get_stream_message(kc)
MinRK
msgspec 5: stream.data -> stream.text
r18104 self.assertEqual(msg['content']['text'], 'bar\n')
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475
#-----------------------------------------------------------------------------
# Utility functions
#-----------------------------------------------------------------------------
MinRK
update inprocess kernel to new layout...
r10298 def get_stream_message(kernel_client, timeout=5):
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475 """ Gets a single stream message synchronously from the sub channel.
"""
while True:
MinRK
update inprocess kernel to new layout...
r10298 msg = kernel_client.get_iopub_msg(timeout=timeout)
epatters
TST: Add some unit tests for in-process kernel and kernel manager.
r8475 if msg['header']['msg_type'] == 'stream':
return msg
if __name__ == '__main__':
unittest.main()