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