test_embed.py
54 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
Paul Ivanov
|
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 | ||||
#----------------------------------------------------------------------------- | ||||
import sys | ||||
import nose.tools as nt | ||||
from IPython.utils.process import process_handler | ||||
Paul Ivanov
|
r14707 | from IPython.utils.tempdir import NamedFileInTemporaryDirectory | ||
Paul Ivanov
|
r14184 | |||
#----------------------------------------------------------------------------- | ||||
# Tests | ||||
#----------------------------------------------------------------------------- | ||||
_sample_embed = """ | ||||
from __future__ import print_function | ||||
import IPython | ||||
a = 3 | ||||
b = 14 | ||||
print(a, '.', b) | ||||
IPython.embed() | ||||
Paul Ivanov
|
r14707 | print('bye!') | ||
Paul Ivanov
|
r14184 | """ | ||
Paul Ivanov
|
r14712 | _exit = "exit\r".encode('UTF-8') | ||
Paul Ivanov
|
r14184 | def test_ipython_embed(): | ||
Paul Ivanov
|
r14707 | """test that `IPython.embed()` works""" | ||
with NamedFileInTemporaryDirectory('file_with_embed.py') as f: | ||||
Paul Ivanov
|
r14712 | f.write(_sample_embed.encode('UTF-8')) | ||
Paul Ivanov
|
r14707 | f.flush() | ||
# run `python file_with_embed.py` | ||||
cmd = [sys.executable, f.name] | ||||
_, out, p = process_handler(cmd, | ||||
Paul Ivanov
|
r14712 | lambda p: (p.stdin.write(_exit), p.communicate()[:], p)) | ||
std = out[0].decode('UTF-8') | ||||
Paul Ivanov
|
r14707 | nt.assert_equal(p.returncode, 0) | ||
Paul Ivanov
|
r14712 | nt.assert_in('3 . 14', std) | ||
nt.assert_in('IPython', std) | ||||
nt.assert_in('bye!', std) | ||||
Paul Ivanov
|
r14184 | |||