test_deepreload.py
53 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
Bradley M. Froehle
|
r6534 | # -*- coding: utf-8 -*- | ||
Bradley M. Froehle
|
r6533 | """Test suite for the deepreload module.""" | ||
Bradley M. Froehle
|
r6534 | #----------------------------------------------------------------------------- | ||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
Bradley M. Froehle
|
r6535 | import os | ||
import sys | ||||
import nose.tools as nt | ||||
Bradley M. Froehle
|
r6533 | from IPython.testing import decorators as dec | ||
Bradley M. Froehle
|
r6541 | from IPython.utils.syspathcontext import prepended_to_syspath | ||
Bradley M. Froehle
|
r6535 | from IPython.utils.tempdir import TemporaryDirectory | ||
Bradley M. Froehle
|
r6533 | from IPython.lib.deepreload import reload as dreload | ||
Bradley M. Froehle
|
r6534 | #----------------------------------------------------------------------------- | ||
# Test functions begin | ||||
#----------------------------------------------------------------------------- | ||||
Bradley M. Froehle
|
r6533 | @dec.skipif_not_numpy | ||
def test_deepreload_numpy(): | ||||
Bradley M. Froehle
|
r6535 | "Test that NumPy can be deep reloaded." | ||
Bradley M. Froehle
|
r6533 | import numpy | ||
exclude = [ | ||||
# Standard exclusions: | ||||
'sys', 'os.path', '__builtin__', '__main__', | ||||
# Test-related exclusions: | ||||
Bradley M. Froehle
|
r6612 | 'unittest', 'UserDict', | ||
Bradley M. Froehle
|
r6533 | ] | ||
dreload(numpy, exclude=exclude) | ||||
Bradley M. Froehle
|
r6535 | |||
def test_deepreload(): | ||||
"Test that dreload does deep reloads and skips excluded modules." | ||||
with TemporaryDirectory() as tmpdir: | ||||
Bradley M. Froehle
|
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)) | ||||