blob: ac0a32b41ccbf601e53ae4dfc03ebf8a7b7a67ee [file] [log] [blame]
Collin Winter828f04a2007-08-31 00:04:24 +00001# Copyright 2007 Google, Inc. All Rights Reserved.
2# Licensed to PSF under a Contributor Agreement.
3
4"""Tests for the raise statement."""
5
6from test import test_support
7import sys
8import types
9import unittest
10
11
12def get_tb():
13 try:
14 raise OSError()
15 except:
16 return sys.exc_info()[2]
17
18
19class TestRaise(unittest.TestCase):
20 def test_invalid_reraise(self):
21 try:
22 raise
23 except RuntimeError as e:
24 self.failUnless("No active exception" in str(e))
25 else:
26 self.fail("No exception raised")
27
28 def test_reraise(self):
29 try:
30 try:
31 raise IndexError()
32 except IndexError as e:
33 exc1 = e
34 raise
35 except IndexError as exc2:
36 self.failUnless(exc1 is exc2)
37 else:
38 self.fail("No exception raised")
39
40
41class TestCause(unittest.TestCase):
42 def test_invalid_cause(self):
43 try:
44 raise IndexError from 5
45 except TypeError as e:
46 self.failUnless("exception cause" in str(e))
47 else:
48 self.fail("No exception raised")
49
50 def test_class_cause(self):
51 try:
52 raise IndexError from KeyError
53 except IndexError as e:
54 self.failUnless(isinstance(e.__cause__, KeyError))
55 else:
56 self.fail("No exception raised")
57
58 def test_instance_cause(self):
59 cause = KeyError()
60 try:
61 raise IndexError from cause
62 except IndexError as e:
63 self.failUnless(e.__cause__ is cause)
64 else:
65 self.fail("No exception raised")
66
67
68class TestTraceback(unittest.TestCase):
69 def test_sets_traceback(self):
70 try:
71 raise IndexError()
72 except IndexError as e:
73 self.failUnless(isinstance(e.__traceback__, types.TracebackType))
74 else:
75 self.fail("No exception raised")
76
77 def test_accepts_traceback(self):
78 tb = get_tb()
79 try:
80 raise IndexError().with_traceback(tb)
81 except IndexError as e:
82 self.assertNotEqual(e.__traceback__, tb)
83 self.assertEqual(e.__traceback__.tb_next, tb)
84 else:
85 self.fail("No exception raised")
86
87
88# Disabled until context is implemented
89# class TestContext(object):
90# def test_instance_context_bare_raise(self):
91# context = IndexError()
92# try:
93# try:
94# raise context
95# except:
96# raise OSError()
97# except OSError as e:
98# self.assertEqual(e.__context__, context)
99# else:
100# self.fail("No exception raised")
101#
102# def test_class_context_bare_raise(self):
103# context = IndexError
104# try:
105# try:
106# raise context
107# except:
108# raise OSError()
109# except OSError as e:
110# self.assertNotEqual(e.__context__, context)
111# self.failUnless(isinstance(e.__context__, context))
112# else:
113# self.fail("No exception raised")
114
115
116class TestRemovedFunctionality(unittest.TestCase):
117 def test_tuples(self):
118 try:
119 raise (IndexError, KeyError) # This should be a tuple!
120 except TypeError:
121 pass
122 else:
123 self.fail("No exception raised")
124
125 def test_strings(self):
126 try:
127 raise "foo"
128 except TypeError:
129 pass
130 else:
131 self.fail("No exception raised")
132
133
134def test_main():
135 test_support.run_unittest(__name__)
136
137
138if __name__ == "__main__":
139 unittest.main()
140# Copyright 2007 Google, Inc. All Rights Reserved.
141# Licensed to PSF under a Contributor Agreement.
142
143"""Tests for the raise statement."""
144
145from test import test_support
146import sys
147import types
148import unittest
149
150
151def get_tb():
152 try:
153 raise OSError()
154 except:
155 return sys.exc_info()[2]
156
157
158class TestRaise(unittest.TestCase):
159 def test_invalid_reraise(self):
160 try:
161 raise
162 except RuntimeError as e:
163 self.failUnless("No active exception" in str(e))
164 else:
165 self.fail("No exception raised")
166
167 def test_reraise(self):
168 try:
169 try:
170 raise IndexError()
171 except IndexError as e:
172 exc1 = e
173 raise
174 except IndexError as exc2:
175 self.failUnless(exc1 is exc2)
176 else:
177 self.fail("No exception raised")
178
179
180class TestCause(unittest.TestCase):
181 def test_invalid_cause(self):
182 try:
183 raise IndexError from 5
184 except TypeError as e:
185 self.failUnless("exception cause" in str(e))
186 else:
187 self.fail("No exception raised")
188
189 def test_class_cause(self):
190 try:
191 raise IndexError from KeyError
192 except IndexError as e:
193 self.failUnless(isinstance(e.__cause__, KeyError))
194 else:
195 self.fail("No exception raised")
196
197 def test_instance_cause(self):
198 cause = KeyError()
199 try:
200 raise IndexError from cause
201 except IndexError as e:
202 self.failUnless(e.__cause__ is cause)
203 else:
204 self.fail("No exception raised")
205
206
207class TestTraceback(unittest.TestCase):
208 def test_sets_traceback(self):
209 try:
210 raise IndexError()
211 except IndexError as e:
212 self.failUnless(isinstance(e.__traceback__, types.TracebackType))
213 else:
214 self.fail("No exception raised")
215
216 def test_accepts_traceback(self):
217 tb = get_tb()
218 try:
219 raise IndexError().with_traceback(tb)
220 except IndexError as e:
221 self.assertNotEqual(e.__traceback__, tb)
222 self.assertEqual(e.__traceback__.tb_next, tb)
223 else:
224 self.fail("No exception raised")
225
226
227# Disabled until context is implemented
228# class TestContext(object):
229# def test_instance_context_bare_raise(self):
230# context = IndexError()
231# try:
232# try:
233# raise context
234# except:
235# raise OSError()
236# except OSError as e:
237# self.assertEqual(e.__context__, context)
238# else:
239# self.fail("No exception raised")
240#
241# def test_class_context_bare_raise(self):
242# context = IndexError
243# try:
244# try:
245# raise context
246# except:
247# raise OSError()
248# except OSError as e:
249# self.assertNotEqual(e.__context__, context)
250# self.failUnless(isinstance(e.__context__, context))
251# else:
252# self.fail("No exception raised")
253
254
255class TestRemovedFunctionality(unittest.TestCase):
256 def test_tuples(self):
257 try:
258 raise (IndexError, KeyError) # This should be a tuple!
259 except TypeError:
260 pass
261 else:
262 self.fail("No exception raised")
263
264 def test_strings(self):
265 try:
266 raise "foo"
267 except TypeError:
268 pass
269 else:
270 self.fail("No exception raised")
271
272
273def test_main():
274 test_support.run_unittest(__name__)
275
276
277if __name__ == "__main__":
278 unittest.main()
279# Copyright 2007 Google, Inc. All Rights Reserved.
280# Licensed to PSF under a Contributor Agreement.
281
282"""Tests for the raise statement."""
283
284from test import test_support
285import sys
286import types
287import unittest
288
289
290def get_tb():
291 try:
292 raise OSError()
293 except:
294 return sys.exc_info()[2]
295
296
297class TestRaise(unittest.TestCase):
298 def test_invalid_reraise(self):
299 try:
300 raise
301 except RuntimeError as e:
302 self.failUnless("No active exception" in str(e))
303 else:
304 self.fail("No exception raised")
305
306 def test_reraise(self):
307 try:
308 try:
309 raise IndexError()
310 except IndexError as e:
311 exc1 = e
312 raise
313 except IndexError as exc2:
314 self.failUnless(exc1 is exc2)
315 else:
316 self.fail("No exception raised")
317
318
319class TestCause(unittest.TestCase):
320 def test_invalid_cause(self):
321 try:
322 raise IndexError from 5
323 except TypeError as e:
324 self.failUnless("exception cause" in str(e))
325 else:
326 self.fail("No exception raised")
327
328 def test_class_cause(self):
329 try:
330 raise IndexError from KeyError
331 except IndexError as e:
332 self.failUnless(isinstance(e.__cause__, KeyError))
333 else:
334 self.fail("No exception raised")
335
336 def test_instance_cause(self):
337 cause = KeyError()
338 try:
339 raise IndexError from cause
340 except IndexError as e:
341 self.failUnless(e.__cause__ is cause)
342 else:
343 self.fail("No exception raised")
344
345
346class TestTraceback(unittest.TestCase):
347 def test_sets_traceback(self):
348 try:
349 raise IndexError()
350 except IndexError as e:
351 self.failUnless(isinstance(e.__traceback__, types.TracebackType))
352 else:
353 self.fail("No exception raised")
354
355 def test_accepts_traceback(self):
356 tb = get_tb()
357 try:
358 raise IndexError().with_traceback(tb)
359 except IndexError as e:
360 self.assertNotEqual(e.__traceback__, tb)
361 self.assertEqual(e.__traceback__.tb_next, tb)
362 else:
363 self.fail("No exception raised")
364
365
366# Disabled until context is implemented
367# class TestContext(object):
368# def test_instance_context_bare_raise(self):
369# context = IndexError()
370# try:
371# try:
372# raise context
373# except:
374# raise OSError()
375# except OSError as e:
376# self.assertEqual(e.__context__, context)
377# else:
378# self.fail("No exception raised")
379#
380# def test_class_context_bare_raise(self):
381# context = IndexError
382# try:
383# try:
384# raise context
385# except:
386# raise OSError()
387# except OSError as e:
388# self.assertNotEqual(e.__context__, context)
389# self.failUnless(isinstance(e.__context__, context))
390# else:
391# self.fail("No exception raised")
392
393
394class TestRemovedFunctionality(unittest.TestCase):
395 def test_tuples(self):
396 try:
397 raise (IndexError, KeyError) # This should be a tuple!
398 except TypeError:
399 pass
400 else:
401 self.fail("No exception raised")
402
403 def test_strings(self):
404 try:
405 raise "foo"
406 except TypeError:
407 pass
408 else:
409 self.fail("No exception raised")
410
411
412def test_main():
413 test_support.run_unittest(__name__)
414
415
416if __name__ == "__main__":
417 unittest.main()