##// END OF EJS Templates
Do not deep-reload collection to fix tests....
Matthias Bussonnier -
Show More
@@ -1,53 +1,60 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """Test suite for the deepreload module."""
2 """Test suite for the deepreload module."""
3
3
4 #-----------------------------------------------------------------------------
4 #-----------------------------------------------------------------------------
5 # Imports
5 # Imports
6 #-----------------------------------------------------------------------------
6 #-----------------------------------------------------------------------------
7
7
8 import os
8 import os
9
9
10 import nose.tools as nt
10 import nose.tools as nt
11
11
12 from IPython.testing import decorators as dec
12 from IPython.testing import decorators as dec
13 from IPython.utils.py3compat import builtin_mod_name
13 from IPython.utils.py3compat import builtin_mod_name, PY3
14 from IPython.utils.syspathcontext import prepended_to_syspath
14 from IPython.utils.syspathcontext import prepended_to_syspath
15 from IPython.utils.tempdir import TemporaryDirectory
15 from IPython.utils.tempdir import TemporaryDirectory
16 from IPython.lib.deepreload import reload as dreload
16 from IPython.lib.deepreload import reload as dreload
17
17
18 #-----------------------------------------------------------------------------
18 #-----------------------------------------------------------------------------
19 # Test functions begin
19 # Test functions begin
20 #-----------------------------------------------------------------------------
20 #-----------------------------------------------------------------------------
21
21
22 @dec.skipif_not_numpy
22 @dec.skipif_not_numpy
23 def test_deepreload_numpy():
23 def test_deepreload_numpy():
24 "Test that NumPy can be deep reloaded."
24 "Test that NumPy can be deep reloaded."
25 import numpy
25 import numpy
26 exclude = [
26 exclude = [
27 # Standard exclusions:
27 # Standard exclusions:
28 'sys', 'os.path', builtin_mod_name, '__main__',
28 'sys', 'os.path', builtin_mod_name, '__main__',
29 # Test-related exclusions:
29 # Test-related exclusions:
30 'unittest', 'UserDict',
30 'unittest', 'UserDict',
31 ]
31 ]
32
33 # `collections` builtin shall not be reloaded to avoid failure
34 # of lib.pretty collections related pretty printing.
35 # of course this make nose crash on Py3 because of Py 2.3 compat...
36 if not PY3:
37 exclude.append('collections')
38
32 dreload(numpy, exclude=exclude)
39 dreload(numpy, exclude=exclude)
33
40
34 def test_deepreload():
41 def test_deepreload():
35 "Test that dreload does deep reloads and skips excluded modules."
42 "Test that dreload does deep reloads and skips excluded modules."
36 with TemporaryDirectory() as tmpdir:
43 with TemporaryDirectory() as tmpdir:
37 with prepended_to_syspath(tmpdir):
44 with prepended_to_syspath(tmpdir):
38 with open(os.path.join(tmpdir, 'A.py'), 'w') as f:
45 with open(os.path.join(tmpdir, 'A.py'), 'w') as f:
39 f.write("class Object(object):\n pass\n")
46 f.write("class Object(object):\n pass\n")
40 with open(os.path.join(tmpdir, 'B.py'), 'w') as f:
47 with open(os.path.join(tmpdir, 'B.py'), 'w') as f:
41 f.write("import A\n")
48 f.write("import A\n")
42 import A
49 import A
43 import B
50 import B
44
51
45 # Test that A is not reloaded.
52 # Test that A is not reloaded.
46 obj = A.Object()
53 obj = A.Object()
47 dreload(B, exclude=['A'])
54 dreload(B, exclude=['A'])
48 nt.assert_true(isinstance(obj, A.Object))
55 nt.assert_true(isinstance(obj, A.Object))
49
56
50 # Test that A is reloaded.
57 # Test that A is reloaded.
51 obj = A.Object()
58 obj = A.Object()
52 dreload(B)
59 dreload(B)
53 nt.assert_false(isinstance(obj, A.Object))
60 nt.assert_false(isinstance(obj, A.Object))
General Comments 0
You need to be logged in to leave comments. Login now