##// END OF EJS Templates
Merge pull request #2432 from bfroehle/revert_1831...
Merge pull request #2432 from bfroehle/revert_1831 Revert #1831, the `__file__` injection in safe_execfile / safe_execfile_ipy. This reverts commit 2717feb, reversing changes made to ea4f608. Pull request #1831 (fix #1814 set __file__ when running .ipy files) has been the source of a lot of grief: #2279: Setting __file__ to None breaks Mayavi import #2429: Using warnings.warn() results in TypeError In general the patch was inappropriate because it: 1. Fails to properly restore the context, by setting __file__ to None rather than deleting it. 2. Sets __file__ in the wrong dictionary (self.user_ns rather than where[0]).

File last commit:

r6612:9b5abe14
r8509:d3d37a3a merge
Show More
test_deepreload.py
53 lines | 1.7 KiB | text/x-python | PythonLexer
/ IPython / lib / tests / test_deepreload.py
Bradley M. Froehle
Reformat test to a standard style.
r6534 # -*- coding: utf-8 -*-
Bradley M. Froehle
Add deepreload unit test....
r6533 """Test suite for the deepreload module."""
Bradley M. Froehle
Reformat test to a standard style.
r6534 #-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Bradley M. Froehle
Add deepreload functionality test.
r6535 import os
import sys
import nose.tools as nt
Bradley M. Froehle
Add deepreload unit test....
r6533 from IPython.testing import decorators as dec
Bradley M. Froehle
Clean up sys.path entry.
r6541 from IPython.utils.syspathcontext import prepended_to_syspath
Bradley M. Froehle
Add deepreload functionality test.
r6535 from IPython.utils.tempdir import TemporaryDirectory
Bradley M. Froehle
Add deepreload unit test....
r6533 from IPython.lib.deepreload import reload as dreload
Bradley M. Froehle
Reformat test to a standard style.
r6534 #-----------------------------------------------------------------------------
# Test functions begin
#-----------------------------------------------------------------------------
Bradley M. Froehle
Add deepreload unit test....
r6533 @dec.skipif_not_numpy
def test_deepreload_numpy():
Bradley M. Froehle
Add deepreload functionality test.
r6535 "Test that NumPy can be deep reloaded."
Bradley M. Froehle
Add deepreload unit test....
r6533 import numpy
exclude = [
# Standard exclusions:
'sys', 'os.path', '__builtin__', '__main__',
# Test-related exclusions:
Bradley M. Froehle
Exclude UserDict when deep reloading NumPy....
r6612 'unittest', 'UserDict',
Bradley M. Froehle
Add deepreload unit test....
r6533 ]
dreload(numpy, exclude=exclude)
Bradley M. Froehle
Add deepreload functionality test.
r6535
def test_deepreload():
"Test that dreload does deep reloads and skips excluded modules."
with TemporaryDirectory() as tmpdir:
Bradley M. Froehle
Clean up sys.path entry.
r6541 with prepended_to_syspath(tmpdir):
with open(os.path.join(tmpdir, 'A.py'), 'w') as f:
f.write("class Object(object):\n pass\n")
with open(os.path.join(tmpdir, 'B.py'), 'w') as f:
f.write("import A\n")
import A
import B
# Test that A is not reloaded.
obj = A.Object()
dreload(B, exclude=['A'])
nt.assert_true(isinstance(obj, A.Object))
# Test that A is reloaded.
obj = A.Object()
dreload(B)
nt.assert_false(isinstance(obj, A.Object))