##// END OF EJS Templates
Merge pull request #4048 from minrk/finish-notes...
Merge pull request #4048 from minrk/finish-notes finish up speaker-notes PR This removes the special handling of speaker notes, simply informing the user that speaker notes require local require.js. It also renames the alias name for reveal.js url prefix to something more descriptive (reveal-prefix).

File last commit:

r12414:58114309
r12517:829790a6 merge
Show More
test_kernel.py
170 lines | 5.8 KiB | text/x-python | PythonLexer
MinRK
add basic print tests for kernel...
r9438 """test the IPython Kernel"""
#-------------------------------------------------------------------------------
# Copyright (C) 2013 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.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
MinRK
subprocess outstream forwarding doesn't work on Windows
r9449 import sys
MinRK
add basic print tests for kernel...
r9438
import nose.tools as nt
MinRK
only test `--help-all`...
r12357 from IPython.testing import decorators as dec, tools as tt
MinRK
move kernel-test utilities to kernel.tests.utils...
r12414 from IPython.utils import py3compat
from .utils import new_kernel, kernel, TIMEOUT, assemble_output, execute, flush_channels
MinRK
add basic print tests for kernel...
r9438
#-------------------------------------------------------------------------------
# Tests
#-------------------------------------------------------------------------------
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 def _check_mp_mode(kc, expected=False, stream="stdout"):
execute(kc=kc, code="import sys")
flush_channels(kc)
msg_id, content = execute(kc=kc, code="print (sys.%s._check_mp_mode())" % stream)
stdout, stderr = assemble_output(kc.iopub_channel)
MinRK
add basic print tests for kernel...
r9438 nt.assert_equal(eval(stdout.strip()), expected)
MinRK
test input / raw_input...
r12322 # printing tests
MinRK
add basic print tests for kernel...
r9438 def test_simple_print():
"""simple print statement in kernel"""
MinRK
move kernel-test utilities to kernel.tests.utils...
r12414 with kernel() as kc:
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 iopub = kc.iopub_channel
msg_id, content = execute(kc=kc, code="print ('hi')")
MinRK
add basic print tests for kernel...
r9438 stdout, stderr = assemble_output(iopub)
MinRK
play nice with py3k...
r9442 nt.assert_equal(stdout, 'hi\n')
nt.assert_equal(stderr, '')
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 _check_mp_mode(kc, expected=False)
MinRK
add basic print tests for kernel...
r9438
MinRK
subprocess outstream forwarding doesn't work on Windows
r9449 @dec.knownfailureif(sys.platform == 'win32', "subprocess prints fail on Windows")
MinRK
add basic print tests for kernel...
r9438 def test_subprocess_print():
"""printing from forked mp.Process"""
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 with new_kernel() as kc:
iopub = kc.iopub_channel
MinRK
add basic print tests for kernel...
r9438
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 _check_mp_mode(kc, expected=False)
flush_channels(kc)
MinRK
add basic print tests for kernel...
r9438 np = 5
code = '\n'.join([
MinRK
workaround Windows lack of fork in subprocess tests...
r9446 "from __future__ import print_function",
MinRK
add basic print tests for kernel...
r9438 "import multiprocessing as mp",
MinRK
workaround Windows lack of fork in subprocess tests...
r9446 "pool = [mp.Process(target=print, args=('hello', i,)) for i in range(%i)]" % np,
MinRK
add basic print tests for kernel...
r9438 "for p in pool: p.start()",
"for p in pool: p.join()"
])
expected = '\n'.join([
"hello %s" % i for i in range(np)
]) + '\n'
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 msg_id, content = execute(kc=kc, code=code)
MinRK
add basic print tests for kernel...
r9438 stdout, stderr = assemble_output(iopub)
MinRK
play nice with py3k...
r9442 nt.assert_equal(stdout.count("hello"), np, stdout)
MinRK
add basic print tests for kernel...
r9438 for n in range(np):
MinRK
play nice with py3k...
r9442 nt.assert_equal(stdout.count(str(n)), 1, stdout)
nt.assert_equal(stderr, '')
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 _check_mp_mode(kc, expected=False)
_check_mp_mode(kc, expected=False, stream="stderr")
MinRK
add basic print tests for kernel...
r9438
def test_subprocess_noprint():
"""mp.Process without print doesn't trigger iostream mp_mode"""
MinRK
move kernel-test utilities to kernel.tests.utils...
r12414 with kernel() as kc:
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 iopub = kc.iopub_channel
MinRK
add basic print tests for kernel...
r9438
np = 5
code = '\n'.join([
"import multiprocessing as mp",
MinRK
subprocess outstream forwarding doesn't work on Windows
r9449 "pool = [mp.Process(target=range, args=(i,)) for i in range(%i)]" % np,
MinRK
add basic print tests for kernel...
r9438 "for p in pool: p.start()",
"for p in pool: p.join()"
])
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 msg_id, content = execute(kc=kc, code=code)
MinRK
add basic print tests for kernel...
r9438 stdout, stderr = assemble_output(iopub)
MinRK
play nice with py3k...
r9442 nt.assert_equal(stdout, '')
nt.assert_equal(stderr, '')
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 _check_mp_mode(kc, expected=False)
_check_mp_mode(kc, expected=False, stream="stderr")
MinRK
add basic print tests for kernel...
r9438
MinRK
subprocess outstream forwarding doesn't work on Windows
r9449 @dec.knownfailureif(sys.platform == 'win32', "subprocess prints fail on Windows")
MinRK
add test for raising error in forked process
r9441 def test_subprocess_error():
"""error in mp.Process doesn't crash"""
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 with new_kernel() as kc:
iopub = kc.iopub_channel
MinRK
add test for raising error in forked process
r9441
code = '\n'.join([
"import multiprocessing as mp",
MinRK
workaround Windows lack of fork in subprocess tests...
r9446 "p = mp.Process(target=int, args=('hi',))",
MinRK
add test for raising error in forked process
r9441 "p.start()",
"p.join()",
])
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 msg_id, content = execute(kc=kc, code=code)
MinRK
add test for raising error in forked process
r9441 stdout, stderr = assemble_output(iopub)
MinRK
play nice with py3k...
r9442 nt.assert_equal(stdout, '')
MinRK
workaround Windows lack of fork in subprocess tests...
r9446 nt.assert_true("ValueError" in stderr, stderr)
MinRK
add test for raising error in forked process
r9441
MinRK
move test_kernel from IPython.zmq to IPython.kernel...
r12318 _check_mp_mode(kc, expected=False)
_check_mp_mode(kc, expected=False, stream="stderr")
MinRK
add test for raising error in forked process
r9441
MinRK
test input / raw_input...
r12322 # raw_input tests
def test_raw_input():
"""test [raw_]input"""
MinRK
move kernel-test utilities to kernel.tests.utils...
r12414 with kernel() as kc:
MinRK
test input / raw_input...
r12322 iopub = kc.iopub_channel
input_f = "input" if py3compat.PY3 else "raw_input"
theprompt = "prompt> "
code = 'print({input_f}("{theprompt}"))'.format(**locals())
msg_id = kc.execute(code, allow_stdin=True)
msg = kc.get_stdin_msg(block=True, timeout=TIMEOUT)
nt.assert_equal(msg['header']['msg_type'], u'input_request')
content = msg['content']
nt.assert_equal(content['prompt'], theprompt)
text = "some text"
kc.input(text)
reply = kc.get_shell_msg(block=True, timeout=TIMEOUT)
nt.assert_equal(reply['content']['status'], 'ok')
stdout, stderr = assemble_output(iopub)
nt.assert_equal(stdout, text + "\n")
@dec.skipif(py3compat.PY3)
def test_eval_input():
"""test input() on Python 2"""
MinRK
move kernel-test utilities to kernel.tests.utils...
r12414 with kernel() as kc:
MinRK
test input / raw_input...
r12322 iopub = kc.iopub_channel
input_f = "input" if py3compat.PY3 else "raw_input"
theprompt = "prompt> "
code = 'print(input("{theprompt}"))'.format(**locals())
msg_id = kc.execute(code, allow_stdin=True)
msg = kc.get_stdin_msg(block=True, timeout=TIMEOUT)
nt.assert_equal(msg['header']['msg_type'], u'input_request')
content = msg['content']
nt.assert_equal(content['prompt'], theprompt)
kc.input("1+1")
reply = kc.get_shell_msg(block=True, timeout=TIMEOUT)
nt.assert_equal(reply['content']['status'], 'ok')
stdout, stderr = assemble_output(iopub)
nt.assert_equal(stdout, "2\n")
MinRK
only test `--help-all`...
r12357
def test_help_output():
"""ipython kernel --help-all works"""
tt.help_all_output_test('kernel')