##// END OF EJS Templates
Fixed bug on tests so they work when iptest is not called from within IPython/tests
Jorgen Stenarson -
Show More
@@ -1,243 +1,245 b''
1 1 # encoding: utf-8
2 2
3 3 """Tests for genutils.py"""
4 4
5 5 __docformat__ = "restructuredtext en"
6 6
7 7 #-----------------------------------------------------------------------------
8 8 # Copyright (C) 2008 The IPython Development Team
9 9 #
10 10 # Distributed under the terms of the BSD License. The full license is in
11 11 # the file COPYING, distributed as part of this software.
12 12 #-----------------------------------------------------------------------------
13 13
14 14 #-----------------------------------------------------------------------------
15 15 # Imports
16 16 #-----------------------------------------------------------------------------
17 17
18 18 from IPython import genutils
19 19 from IPython.testing.decorators import skipif
20 20 from nose import with_setup
21 21 from nose.tools import raises
22 22
23 23 import os, sys, IPython
24 24 env = os.environ
25 25
26 from os.path import join, abspath
26 from os.path import join, abspath, split
27 27
28 28 try:
29 29 import _winreg as wreg
30 30 except ImportError:
31 31 #Fake _winreg module on none windows platforms
32 32 import new
33 33 sys.modules["_winreg"] = new.module("_winreg")
34 34 import _winreg as wreg
35 35 #Add entries that needs to be stubbed by the testing code
36 36 (wreg.OpenKey, wreg.QueryValueEx,) = (None, None)
37 37
38 test_file_path = split(abspath(__file__))[0]
39
38 40 #skip_if_not_win32 = skipif(sys.platform!='win32',"This test only runs under Windows")
39 41
40 42 def setup_environment():
41 43 global oldstuff, platformstuff
42 44 oldstuff = (env.copy(), os.name, genutils.get_home_dir, IPython.__file__,)
43 45
44 46 if os.name == 'nt':
45 47 platformstuff = (wreg.OpenKey, wreg.QueryValueEx,)
46 48
47 49 if 'IPYTHONDIR' in env:
48 50 del env['IPYTHONDIR']
49 51
50 52 def teardown_environment():
51 53 (oldenv, os.name, genutils.get_home_dir, IPython.__file__,) = oldstuff
52 54 for key in env.keys():
53 55 if key not in oldenv:
54 56 del env[key]
55 57 env.update(oldenv)
56 58 if hasattr(sys, 'frozen'):
57 59 del sys.frozen
58 60 if os.name == 'nt':
59 61 (wreg.OpenKey, wreg.QueryValueEx,) = platformstuff
60 62
61 63 with_enivronment = with_setup(setup_environment, teardown_environment)
62 64
63 65
64 66
65 67
66 68 @with_enivronment
67 69 def test_get_home_dir_1():
68 70 """Testcase to see if we can call get_home_dir without Exceptions."""
69 71 home_dir = genutils.get_home_dir()
70 72
71 73 @with_enivronment
72 74 def test_get_home_dir_2():
73 75 """Testcase for py2exe logic, un-compressed lib
74 76 """
75 77 sys.frozen = True
76 78
77 79 #fake filename for IPython.__init__
78 IPython.__file__ = abspath(join(".", "home_test_dir/Lib/IPython/__init__.py"))
80 IPython.__file__ = abspath(join(test_file_path, "home_test_dir/Lib/IPython/__init__.py"))
79 81
80 82 home_dir = genutils.get_home_dir()
81 assert home_dir == abspath(join(".", "home_test_dir"))
83 assert home_dir == abspath(join(test_file_path, "home_test_dir"))
82 84
83 85 @with_enivronment
84 86 def test_get_home_dir_3():
85 87 """Testcase for py2exe logic, compressed lib
86 88 """
87 89 sys.frozen=True
88 90 #fake filename for IPython.__init__
89 IPython.__file__ = abspath(join(".", "home_test_dir/Library.zip/IPython/__init__.py"))
91 IPython.__file__ = abspath(join(test_file_path, "home_test_dir/Library.zip/IPython/__init__.py"))
90 92
91 93 home_dir = genutils.get_home_dir()
92 assert home_dir == abspath(join(".", "home_test_dir")).lower()
94 assert home_dir == abspath(join(test_file_path, "home_test_dir")).lower()
93 95
94 96 @with_enivronment
95 97 def test_get_home_dir_4():
96 98 """Testcase $HOME is set, then use its value as home directory."""
97 env["HOME"] = join(".","home_test_dir")
99 env["HOME"] = join(test_file_path,"home_test_dir")
98 100 home_dir = genutils.get_home_dir()
99 101 assert home_dir == env["HOME"]
100 102
101 103 @with_enivronment
102 104 def test_get_home_dir_5():
103 105 """Testcase $HOME is not set, os=='posix'.
104 106 This should fail with HomeDirError"""
105 107
106 108 os.name = 'posix'
107 109 del os.environ["HOME"]
108 110 try:
109 111 genutils.get_home_dir()
110 112 assert False
111 113 except genutils.HomeDirError:
112 114 pass
113 115
114 116 @with_enivronment
115 117 def test_get_home_dir_6():
116 118 """Testcase $HOME is not set, os=='nt'
117 119 env['HOMEDRIVE'],env['HOMEPATH'] points to path."""
118 120
119 121 os.name = 'nt'
120 122 del os.environ["HOME"]
121 env['HOMEDRIVE'],env['HOMEPATH'] = os.path.abspath("."),"home_test_dir"
123 env['HOMEDRIVE'],env['HOMEPATH'] = os.path.abspath(test_file_path),"home_test_dir"
122 124
123 125 home_dir = genutils.get_home_dir()
124 assert home_dir == abspath(join(".", "home_test_dir"))
126 assert home_dir == abspath(join(test_file_path, "home_test_dir"))
125 127
126 128 @with_enivronment
127 129 def test_get_home_dir_8():
128 130 """Testcase $HOME is not set, os=='nt'
129 131 env['HOMEDRIVE'],env['HOMEPATH'] do not point to path.
130 132 env['USERPROFILE'] points to path
131 133 """
132 134
133 135 os.name = 'nt'
134 136 del os.environ["HOME"]
135 env['HOMEDRIVE'],env['HOMEPATH'] = os.path.abspath("."),"DOES NOT EXIST"
136 env["USERPROFILE"] = abspath(join(".","home_test_dir"))
137 env['HOMEDRIVE'],env['HOMEPATH'] = os.path.abspath(test_file_path),"DOES NOT EXIST"
138 env["USERPROFILE"] = abspath(join(test_file_path,"home_test_dir"))
137 139
138 140 home_dir = genutils.get_home_dir()
139 assert home_dir == abspath(join(".", "home_test_dir"))
141 assert home_dir == abspath(join(test_file_path, "home_test_dir"))
140 142
141 143 # Should we stub wreg fully so we can run the test on all platforms?
142 144 #@skip_if_not_win32
143 145 @with_enivronment
144 146 def test_get_home_dir_9():
145 147 """Testcase $HOME is not set, os=='nt'
146 148 env['HOMEDRIVE'],env['HOMEPATH'], env['USERPROFILE'] missing
147 149 """
148 150 os.name = 'nt'
149 151 del env["HOME"],env['HOMEDRIVE']
150 152
151 153 #Stub windows registry functions
152 154 def OpenKey(x, y):
153 155 class key:
154 156 def Close(self):
155 157 pass
156 158 return key()
157 159 def QueryValueEx(x, y):
158 return [abspath(join(".", "home_test_dir"))]
160 return [abspath(join(test_file_path, "home_test_dir"))]
159 161
160 162 wreg.OpenKey = OpenKey
161 163 wreg.QueryValueEx = QueryValueEx
162 164
163 165 home_dir = genutils.get_home_dir()
164 assert home_dir == abspath(join(".", "home_test_dir"))
166 assert home_dir == abspath(join(test_file_path, "home_test_dir"))
165 167
166 168
167 169 #
168 170 # Tests for get_ipython_dir
169 171 #
170 172
171 173 @with_enivronment
172 174 def test_get_ipython_dir_1():
173 175 """1 Testcase to see if we can call get_ipython_dir without Exceptions."""
174 176 ipdir = genutils.get_ipython_dir()
175 177
176 178
177 179 @with_enivronment
178 180 def test_get_ipython_dir_2():
179 181 """2 Testcase to see if we can call get_ipython_dir without Exceptions."""
180 182 env['IPYTHONDIR'] = "someplace/.ipython"
181 183 ipdir = genutils.get_ipython_dir()
182 184 assert ipdir == os.path.abspath("someplace/.ipython")
183 185
184 186
185 187 @with_enivronment
186 188 def test_get_ipython_dir_3():
187 189 """3 Testcase to see if we can call get_ipython_dir without Exceptions."""
188 190 genutils.get_home_dir=lambda : "someplace"
189 191 os.name = "posix"
190 192 ipdir = genutils.get_ipython_dir()
191 193 assert ipdir == os.path.abspath(os.path.join("someplace", ".ipython"))
192 194
193 195 @with_enivronment
194 196 def test_get_ipython_dir_4():
195 197 """4 Testcase to see if we can call get_ipython_dir without Exceptions."""
196 198 genutils.get_home_dir = lambda : "someplace"
197 199 os.name = "nt"
198 200 ipdir = genutils.get_ipython_dir()
199 201 assert ipdir == os.path.abspath(os.path.join("someplace", "_ipython"))
200 202
201 203
202 204 #
203 205 # Tests for get_security_dir
204 206 #
205 207
206 208 @with_enivronment
207 209 def test_get_security_dir():
208 210 """Testcase to see if we can call get_security_dir without Exceptions."""
209 211 sdir = genutils.get_security_dir()
210 212
211 213
212 214 #
213 215 # Tests for popkey
214 216 #
215 217
216 218 def test_popkey_1():
217 219 dct = dict(a=1, b=2, c=3)
218 220 assert genutils.popkey(dct, "a") == 1
219 221 assert dct == dict(b=2, c=3)
220 222 assert genutils.popkey(dct, "b") == 2
221 223 assert dct == dict(c=3)
222 224 assert genutils.popkey(dct, "c") == 3
223 225 assert dct == dict()
224 226
225 227 @raises(KeyError)
226 228 def test_popkey_2():
227 229 dct = dict(a=1, b=2, c=3)
228 230 genutils.popkey(dct, "d")
229 231
230 232 def test_popkey_3():
231 233 dct = dict(a=1, b=2, c=3)
232 234 assert genutils.popkey(dct, "A", 13)==13
233 235 assert dct == dict(a=1, b=2, c=3)
234 236 assert genutils.popkey(dct, "B", 14)==14
235 237 assert dct == dict(a=1, b=2, c=3)
236 238 assert genutils.popkey(dct, "C", 15)==15
237 239 assert dct == dict(a=1, b=2, c=3)
238 240 assert genutils.popkey(dct, "a")==1
239 241 assert dct == dict(b=2, c=3)
240 242 assert genutils.popkey(dct, "b")==2
241 243 assert dct == dict(c=3)
242 244 assert genutils.popkey(dct, "c")==3
243 245 assert dct == dict()
General Comments 0
You need to be logged in to leave comments. Login now