##// END OF EJS Templates
Merge Fernando's recent work (see log for details)
Merge Fernando's recent work (see log for details)

File last commit:

r1922:076005a6
r1923:ad503246 merge
Show More
test_iplib.py
68 lines | 2.5 KiB | text/x-python | PythonLexer
Fernando Perez
Fix https://bugs.launchpad.net/ipython/+bug/239054...
r1859 """Tests for the key iplib module, where the main ipython class is defined.
"""
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 #-----------------------------------------------------------------------------
# Module imports
#-----------------------------------------------------------------------------
Fernando Perez
Fix https://bugs.launchpad.net/ipython/+bug/239054...
r1859
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 # stdlib
import os
import shutil
import tempfile
# third party
Fernando Perez
Fix https://bugs.launchpad.net/ipython/+bug/239054...
r1859 import nose.tools as nt
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 # our own packages
from IPython import iplib
#-----------------------------------------------------------------------------
# Globals
#-----------------------------------------------------------------------------
# Useful global ipapi object and main IPython one. Unfortunately we have a
# long precedent of carrying the 'ipapi' global object which is injected into
# the system namespace as _ip, but that keeps a pointer to the actual IPython
# InteractiveShell instance, which is named IP. Since in testing we do need
# access to the real thing (we want to probe beyond what ipapi exposes), make
# here a global reference to each. In general, things that are exposed by the
# ipapi instance should be read from there, but we also will often need to use
# the actual IPython one.
Fernando Perez
Allow user_setup to be called multiple times.
r1903
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 ip = _ip # This is the ipapi instance
IP = ip.IP # This is the actual IPython shell 'raw' object.
#-----------------------------------------------------------------------------
# Test functions
#-----------------------------------------------------------------------------
Fernando Perez
Fix problems with multiline doctests and add docs about testing....
r1868
Fernando Perez
Fix https://bugs.launchpad.net/ipython/+bug/239054...
r1859 def test_reset():
"""reset must clear most namespaces."""
Fernando Perez
Allow user_setup to be called multiple times.
r1903 IP.reset() # first, it should run without error
Fernando Perez
Fix https://bugs.launchpad.net/ipython/+bug/239054...
r1859 # Then, check that most namespaces end up empty
Fernando Perez
Allow user_setup to be called multiple times.
r1903 for ns in IP.ns_refs_table:
if ns is IP.user_ns:
Fernando Perez
Fix https://bugs.launchpad.net/ipython/+bug/239054...
r1859 # The user namespace is reset with some data, so we can't check for
# it being empty
continue
nt.assert_equals(len(ns),0)
Fernando Perez
Allow user_setup to be called multiple times.
r1903
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 # make sure that user_setup can be run re-entrantly in 'install' mode.
Fernando Perez
Allow user_setup to be called multiple times.
r1903 def test_user_setup():
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 # use a lambda to pass kwargs to the generator
user_setup = lambda a,k: iplib.user_setup(*a,**k)
Fernando Perez
Small formatting fixes to address Jorgen's last code review.
r1922 kw = dict(mode='install', interactive=False)
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908
# Call the user setup and verify that the directory exists
Fernando Perez
Small formatting fixes to address Jorgen's last code review.
r1922 yield user_setup, (ip.options.ipythondir,''), kw
yield os.path.isdir, ip.options.ipythondir
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908
# Now repeat the operation with a non-existent directory. Check both that
# the call succeeds and that the directory is created.
tmpdir = tempfile.mktemp(prefix='ipython-test-')
try:
Fernando Perez
Small formatting fixes to address Jorgen's last code review.
r1922 yield user_setup, (tmpdir,''), kw
yield os.path.isdir, tmpdir
Fernando Perez
Make user_setup a top-level function in iplib and add better tests....
r1908 finally:
# In this case, clean up the temp dir once done
shutil.rmtree(tmpdir)