blob: 9796ef4e695e4567ebddc04b7746d3ccc0e8bab1 [file] [log] [blame]
Guido van Rossum3bead091992-01-27 17:00:37 +00001# Python test set -- part 5, built-in exceptions
2
3from test_support import *
Barry Warsaw6ed41a01997-08-29 21:58:25 +00004from types import ClassType
Guido van Rossum3bead091992-01-27 17:00:37 +00005
6print '5. Built-in exceptions'
7# XXX This is not really enough, each *operation* should be tested!
8
Barry Warsaw6ed41a01997-08-29 21:58:25 +00009def r(thing):
10 if type(thing) == ClassType:
Guido van Rossum41360a41998-03-26 19:42:58 +000011 print thing.__name__
Barry Warsaw6ed41a01997-08-29 21:58:25 +000012 else:
Guido van Rossum41360a41998-03-26 19:42:58 +000013 print thing
Guido van Rossum3bead091992-01-27 17:00:37 +000014
15r(AttributeError)
16import sys
17try: x = sys.undefined_attribute
18except AttributeError: pass
19
20r(EOFError)
21import sys
22fp = open(TESTFN, 'w')
23fp.close()
24fp = open(TESTFN, 'r')
25savestdin = sys.stdin
26try:
Guido van Rossum41360a41998-03-26 19:42:58 +000027 try:
28 sys.stdin = fp
29 x = raw_input()
30 except EOFError:
31 pass
Guido van Rossum3bead091992-01-27 17:00:37 +000032finally:
Guido van Rossum41360a41998-03-26 19:42:58 +000033 sys.stdin = savestdin
34 fp.close()
Guido van Rossum3bead091992-01-27 17:00:37 +000035
36r(IOError)
37try: open('this file does not exist', 'r')
38except IOError: pass
39
40r(ImportError)
41try: import undefined_module
42except ImportError: pass
43
44r(IndexError)
45x = []
46try: a = x[10]
47except IndexError: pass
48
49r(KeyError)
50x = {}
51try: a = x['key']
52except KeyError: pass
53
54r(KeyboardInterrupt)
55print '(not testable in a script)'
56
57r(MemoryError)
58print '(not safe to test)'
59
60r(NameError)
61try: x = undefined_variable
62except NameError: pass
63
64r(OverflowError)
65x = 1
66try:
Guido van Rossum41360a41998-03-26 19:42:58 +000067 while 1: x = x+x
Guido van Rossum3bead091992-01-27 17:00:37 +000068except OverflowError: pass
69
70r(RuntimeError)
71print '(not used any more?)'
72
73r(SyntaxError)
Guido van Rossume2cb7271995-08-11 14:24:47 +000074try: exec '/\n'
Guido van Rossum3bead091992-01-27 17:00:37 +000075except SyntaxError: pass
76
77r(SystemError)
78print '(hard to reproduce)'
79
80r(SystemExit)
81import sys
82try: sys.exit(0)
83except SystemExit: pass
84
85r(TypeError)
86try: [] + ()
87except TypeError: pass
88
89r(ValueError)
90try: x = chr(10000)
91except ValueError: pass
92
93r(ZeroDivisionError)
94try: x = 1/0
95except ZeroDivisionError: pass
96
97unlink(TESTFN)