##// END OF EJS Templates
[core][tests][paths] Remove nose
Samuel Gaist -
Show More
@@ -1,204 +1,205 b''
1 1 import errno
2 2 import os
3 3 import shutil
4 4 import sys
5 5 import tempfile
6 6 import warnings
7 7 from unittest.mock import patch
8 8
9 import nose.tools as nt
10 9 from testpath import modified_env, assert_isdir, assert_isfile
11 10
12 11 from IPython import paths
13 12 from IPython.testing.decorators import skip_win32
14 13 from IPython.utils.tempdir import TemporaryDirectory
15 14
16 15 TMP_TEST_DIR = os.path.realpath(tempfile.mkdtemp())
17 16 HOME_TEST_DIR = os.path.join(TMP_TEST_DIR, "home_test_dir")
18 17 XDG_TEST_DIR = os.path.join(HOME_TEST_DIR, "xdg_test_dir")
19 18 XDG_CACHE_DIR = os.path.join(HOME_TEST_DIR, "xdg_cache_dir")
20 19 IP_TEST_DIR = os.path.join(HOME_TEST_DIR,'.ipython')
21 20
22 21 def setup_module():
23 22 """Setup testenvironment for the module:
24 23
25 24 - Adds dummy home dir tree
26 25 """
27 26 # Do not mask exceptions here. In particular, catching WindowsError is a
28 27 # problem because that exception is only defined on Windows...
29 28 os.makedirs(IP_TEST_DIR)
30 29 os.makedirs(os.path.join(XDG_TEST_DIR, 'ipython'))
31 30 os.makedirs(os.path.join(XDG_CACHE_DIR, 'ipython'))
32 31
33 32
34 33 def teardown_module():
35 34 """Teardown testenvironment for the module:
36 35
37 36 - Remove dummy home dir tree
38 37 """
39 38 # Note: we remove the parent test dir, which is the root of all test
40 39 # subdirs we may have created. Use shutil instead of os.removedirs, so
41 40 # that non-empty directories are all recursively removed.
42 41 shutil.rmtree(TMP_TEST_DIR)
43 42
44 43 def patch_get_home_dir(dirpath):
45 44 return patch.object(paths, 'get_home_dir', return_value=dirpath)
46 45
47 46
48 47 def test_get_ipython_dir_1():
49 48 """test_get_ipython_dir_1, Testcase to see if we can call get_ipython_dir without Exceptions."""
50 49 env_ipdir = os.path.join("someplace", ".ipython")
51 50 with patch.object(paths, '_writable_dir', return_value=True), \
52 51 modified_env({'IPYTHONDIR': env_ipdir}):
53 52 ipdir = paths.get_ipython_dir()
54 53
55 nt.assert_equal(ipdir, env_ipdir)
54 assert ipdir == env_ipdir
56 55
57 56 def test_get_ipython_dir_2():
58 57 """test_get_ipython_dir_2, Testcase to see if we can call get_ipython_dir without Exceptions."""
59 58 with patch_get_home_dir('someplace'), \
60 59 patch.object(paths, 'get_xdg_dir', return_value=None), \
61 60 patch.object(paths, '_writable_dir', return_value=True), \
62 61 patch('os.name', "posix"), \
63 62 modified_env({'IPYTHON_DIR': None,
64 63 'IPYTHONDIR': None,
65 64 'XDG_CONFIG_HOME': None
66 65 }):
67 66 ipdir = paths.get_ipython_dir()
68 67
69 nt.assert_equal(ipdir, os.path.join("someplace", ".ipython"))
68 assert ipdir == os.path.join("someplace", ".ipython")
70 69
71 70 def test_get_ipython_dir_3():
72 71 """test_get_ipython_dir_3, move XDG if defined, and .ipython doesn't exist."""
73 72 tmphome = TemporaryDirectory()
74 73 try:
75 74 with patch_get_home_dir(tmphome.name), \
76 75 patch('os.name', 'posix'), \
77 76 modified_env({
78 77 'IPYTHON_DIR': None,
79 78 'IPYTHONDIR': None,
80 79 'XDG_CONFIG_HOME': XDG_TEST_DIR,
81 80 }), warnings.catch_warnings(record=True) as w:
82 81 ipdir = paths.get_ipython_dir()
83 82
84 nt.assert_equal(ipdir, os.path.join(tmphome.name, ".ipython"))
83 assert ipdir == os.path.join(tmphome.name, ".ipython")
85 84 if sys.platform != 'darwin':
86 nt.assert_equal(len(w), 1)
87 nt.assert_in('Moving', str(w[0]))
85 assert len(w) == 1
86 assert "Moving" in str(w[0])
88 87 finally:
89 88 tmphome.cleanup()
90 89
91 90 def test_get_ipython_dir_4():
92 91 """test_get_ipython_dir_4, warn if XDG and home both exist."""
93 92 with patch_get_home_dir(HOME_TEST_DIR), \
94 93 patch('os.name', 'posix'):
95 94 try:
96 95 os.mkdir(os.path.join(XDG_TEST_DIR, 'ipython'))
97 96 except OSError as e:
98 97 if e.errno != errno.EEXIST:
99 98 raise
100 99
101 100
102 101 with modified_env({
103 102 'IPYTHON_DIR': None,
104 103 'IPYTHONDIR': None,
105 104 'XDG_CONFIG_HOME': XDG_TEST_DIR,
106 105 }), warnings.catch_warnings(record=True) as w:
107 106 ipdir = paths.get_ipython_dir()
108 107
109 nt.assert_equal(ipdir, os.path.join(HOME_TEST_DIR, ".ipython"))
108 assert ipdir == os.path.join(HOME_TEST_DIR, ".ipython")
110 109 if sys.platform != 'darwin':
111 nt.assert_equal(len(w), 1)
112 nt.assert_in('Ignoring', str(w[0]))
110 assert len(w) == 1
111 assert "Ignoring" in str(w[0])
112
113 113
114 114 def test_get_ipython_dir_5():
115 115 """test_get_ipython_dir_5, use .ipython if exists and XDG defined, but doesn't exist."""
116 116 with patch_get_home_dir(HOME_TEST_DIR), \
117 117 patch('os.name', 'posix'):
118 118 try:
119 119 os.rmdir(os.path.join(XDG_TEST_DIR, 'ipython'))
120 120 except OSError as e:
121 121 if e.errno != errno.ENOENT:
122 122 raise
123 123
124 124 with modified_env({
125 125 'IPYTHON_DIR': None,
126 126 'IPYTHONDIR': None,
127 127 'XDG_CONFIG_HOME': XDG_TEST_DIR,
128 128 }):
129 129 ipdir = paths.get_ipython_dir()
130 130
131 nt.assert_equal(ipdir, IP_TEST_DIR)
131 assert ipdir == IP_TEST_DIR
132 132
133 133 def test_get_ipython_dir_6():
134 134 """test_get_ipython_dir_6, use home over XDG if defined and neither exist."""
135 135 xdg = os.path.join(HOME_TEST_DIR, 'somexdg')
136 136 os.mkdir(xdg)
137 137 shutil.rmtree(os.path.join(HOME_TEST_DIR, '.ipython'))
138 138 print(paths._writable_dir)
139 139 with patch_get_home_dir(HOME_TEST_DIR), \
140 140 patch.object(paths, 'get_xdg_dir', return_value=xdg), \
141 141 patch('os.name', 'posix'), \
142 142 modified_env({
143 143 'IPYTHON_DIR': None,
144 144 'IPYTHONDIR': None,
145 145 'XDG_CONFIG_HOME': None,
146 146 }), warnings.catch_warnings(record=True) as w:
147 147 ipdir = paths.get_ipython_dir()
148 148
149 nt.assert_equal(ipdir, os.path.join(HOME_TEST_DIR, '.ipython'))
150 nt.assert_equal(len(w), 0)
149 assert ipdir == os.path.join(HOME_TEST_DIR, ".ipython")
150 assert len(w) == 0
151 151
152 152 def test_get_ipython_dir_7():
153 153 """test_get_ipython_dir_7, test home directory expansion on IPYTHONDIR"""
154 154 home_dir = os.path.normpath(os.path.expanduser('~'))
155 155 with modified_env({'IPYTHONDIR': os.path.join('~', 'somewhere')}), \
156 156 patch.object(paths, '_writable_dir', return_value=True):
157 157 ipdir = paths.get_ipython_dir()
158 nt.assert_equal(ipdir, os.path.join(home_dir, 'somewhere'))
158 assert ipdir == os.path.join(home_dir, "somewhere")
159
159 160
160 161 @skip_win32
161 162 def test_get_ipython_dir_8():
162 163 """test_get_ipython_dir_8, test / home directory"""
163 164 if not os.access("/", os.W_OK):
164 165 # test only when HOME directory actually writable
165 166 return
166 167
167 with patch.object(paths, '_writable_dir', lambda path: bool(path)), \
168 patch.object(paths, 'get_xdg_dir', return_value=None), \
169 modified_env({
170 'IPYTHON_DIR': None,
171 'IPYTHONDIR': None,
172 'HOME': '/',
173 }):
174 nt.assert_equal(paths.get_ipython_dir(), '/.ipython')
168 with patch.object(paths, "_writable_dir", lambda path: bool(path)), patch.object(
169 paths, "get_xdg_dir", return_value=None
170 ), modified_env(
171 {
172 "IPYTHON_DIR": None,
173 "IPYTHONDIR": None,
174 "HOME": "/",
175 }
176 ):
177 assert paths.get_ipython_dir() == "/.ipython"
175 178
176 179
177 180 def test_get_ipython_cache_dir():
178 181 with modified_env({'HOME': HOME_TEST_DIR}):
179 182 if os.name == 'posix' and sys.platform != 'darwin':
180 183 # test default
181 184 os.makedirs(os.path.join(HOME_TEST_DIR, ".cache"))
182 185 with modified_env({'XDG_CACHE_HOME': None}):
183 186 ipdir = paths.get_ipython_cache_dir()
184 nt.assert_equal(os.path.join(HOME_TEST_DIR, ".cache", "ipython"),
185 ipdir)
187 assert os.path.join(HOME_TEST_DIR, ".cache", "ipython") == ipdir
186 188 assert_isdir(ipdir)
187 189
188 190 # test env override
189 191 with modified_env({"XDG_CACHE_HOME": XDG_CACHE_DIR}):
190 192 ipdir = paths.get_ipython_cache_dir()
191 193 assert_isdir(ipdir)
192 nt.assert_equal(ipdir, os.path.join(XDG_CACHE_DIR, "ipython"))
194 assert ipdir == os.path.join(XDG_CACHE_DIR, "ipython")
193 195 else:
194 nt.assert_equal(paths.get_ipython_cache_dir(),
195 paths.get_ipython_dir())
196 assert paths.get_ipython_cache_dir() == paths.get_ipython_dir()
196 197
197 198 def test_get_ipython_package_dir():
198 199 ipdir = paths.get_ipython_package_dir()
199 200 assert_isdir(ipdir)
200 201
201 202
202 203 def test_get_ipython_module_path():
203 204 ipapp_path = paths.get_ipython_module_path('IPython.terminal.ipapp')
204 205 assert_isfile(ipapp_path)
General Comments 0
You need to be logged in to leave comments. Login now