##// END OF EJS Templates
catch errors at a lower level in interact...
catch errors at a lower level in interact for cleaner tracebacks in the interact callback than the fallback case

File last commit:

r14840:68cef000
r15193:9853ad80
Show More
test_embed.py
57 lines | 1.7 KiB | text/x-python | PythonLexer
Paul Ivanov
initial test for the embedding
r14184 """Test embedding of IPython"""
#-----------------------------------------------------------------------------
# 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
#-----------------------------------------------------------------------------
Thomas Kluyver
Skip failing test part on Windows...
r14840 import os
Paul Ivanov
initial test for the embedding
r14184 import sys
import nose.tools as nt
from IPython.utils.process import process_handler
Paul Ivanov
updated test for IPython.embed()
r14707 from IPython.utils.tempdir import NamedFileInTemporaryDirectory
Paul Ivanov
initial test for the embedding
r14184
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
Paul Ivanov
cleaner string/bytes solution, closes #4759...
r14731 _sample_embed = b"""
Paul Ivanov
initial test for the embedding
r14184 from __future__ import print_function
import IPython
a = 3
b = 14
print(a, '.', b)
IPython.embed()
Paul Ivanov
updated test for IPython.embed()
r14707 print('bye!')
Paul Ivanov
initial test for the embedding
r14184 """
Paul Ivanov
cleaner string/bytes solution, closes #4759...
r14731 _exit = b"exit\r"
Paul Ivanov
3 at last, 3 at last, thank Guido BDFL......
r14712
Paul Ivanov
initial test for the embedding
r14184 def test_ipython_embed():
Paul Ivanov
updated test for IPython.embed()
r14707 """test that `IPython.embed()` works"""
with NamedFileInTemporaryDirectory('file_with_embed.py') as f:
Paul Ivanov
cleaner string/bytes solution, closes #4759...
r14731 f.write(_sample_embed)
Paul Ivanov
updated test for IPython.embed()
r14707 f.flush()
Paul Ivanov
fix test for windows, just in case
r14802 f.close() # otherwise msft won't be able to read the file
Paul Ivanov
updated test for IPython.embed()
r14707
# run `python file_with_embed.py`
cmd = [sys.executable, f.name]
Paul Ivanov
cleaner use of process_handler
r14801 out, p = process_handler(cmd, lambda p: (p.communicate(_exit), p))
Paul Ivanov
3 at last, 3 at last, thank Guido BDFL......
r14712 std = out[0].decode('UTF-8')
Paul Ivanov
updated test for IPython.embed()
r14707 nt.assert_equal(p.returncode, 0)
Paul Ivanov
3 at last, 3 at last, thank Guido BDFL......
r14712 nt.assert_in('3 . 14', std)
Thomas Kluyver
Skip failing test part on Windows...
r14840 if os.name != 'nt':
# TODO: Fix up our different stdout references, see issue gh-14
nt.assert_in('IPython', std)
Paul Ivanov
3 at last, 3 at last, thank Guido BDFL......
r14712 nt.assert_in('bye!', std)
Paul Ivanov
initial test for the embedding
r14184