"""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 os import sys import nose.tools as nt from IPython.utils.process import process_handler from IPython.utils.tempdir import NamedFileInTemporaryDirectory #----------------------------------------------------------------------------- # Tests #----------------------------------------------------------------------------- _sample_embed = b""" from __future__ import print_function import IPython a = 3 b = 14 print(a, '.', b) IPython.embed() print('bye!') """ _exit = b"exit\r" def test_ipython_embed(): """test that `IPython.embed()` works""" with NamedFileInTemporaryDirectory('file_with_embed.py') as f: f.write(_sample_embed) f.flush() f.close() # otherwise msft won't be able to read the file # run `python file_with_embed.py` cmd = [sys.executable, f.name] out, p = process_handler(cmd, lambda p: (p.communicate(_exit), p)) std = out[0].decode('UTF-8') nt.assert_equal(p.returncode, 0) nt.assert_in('3 . 14', std) if os.name != 'nt': # TODO: Fix up our different stdout references, see issue gh-14 nt.assert_in('IPython', std) nt.assert_in('bye!', std)