11a572964507512f3becd0c934525bd3caf9cc1acTim Peters 21a572964507512f3becd0c934525bd3caf9cc1acTim Petersfrom test.test_support import run_unittest 31a572964507512f3becd0c934525bd3caf9cc1acTim Petersimport unittest 41a572964507512f3becd0c934525bd3caf9cc1acTim Peters 51a572964507512f3becd0c934525bd3caf9cc1acTim Petersclass ExceptionTestCase(unittest.TestCase): 61a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_else_finally(self): 71a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 81a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = False 91a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 101a572964507512f3becd0c934525bd3caf9cc1acTim Peters 111a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 121a572964507512f3becd0c934525bd3caf9cc1acTim Peters raise Exception, 'nyaa!' 131a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 141a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 151a572964507512f3becd0c934525bd3caf9cc1acTim Peters else: 161a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = True 171a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 181a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 191a572964507512f3becd0c934525bd3caf9cc1acTim Peters 201a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_except) 211a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 221a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_else) 231a572964507512f3becd0c934525bd3caf9cc1acTim Peters 241a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_else_finally_no_exception(self): 251a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 261a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = False 271a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 281a572964507512f3becd0c934525bd3caf9cc1acTim Peters 291a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 301a572964507512f3becd0c934525bd3caf9cc1acTim Peters pass 311a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 321a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 331a572964507512f3becd0c934525bd3caf9cc1acTim Peters else: 341a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = True 351a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 361a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 371a572964507512f3becd0c934525bd3caf9cc1acTim Peters 381a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_except) 391a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 401a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_else) 411a572964507512f3becd0c934525bd3caf9cc1acTim Peters 421a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_finally(self): 431a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 441a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 451a572964507512f3becd0c934525bd3caf9cc1acTim Peters 461a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 471a572964507512f3becd0c934525bd3caf9cc1acTim Peters raise Exception, 'yarr!' 481a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 491a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 501a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 511a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 521a572964507512f3becd0c934525bd3caf9cc1acTim Peters 531a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_except) 541a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 551a572964507512f3becd0c934525bd3caf9cc1acTim Peters 561a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_finally_no_exception(self): 571a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 581a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 591a572964507512f3becd0c934525bd3caf9cc1acTim Peters 601a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 611a572964507512f3becd0c934525bd3caf9cc1acTim Peters pass 621a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 631a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 641a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 651a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 661a572964507512f3becd0c934525bd3caf9cc1acTim Peters 671a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_except) 681a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 691a572964507512f3becd0c934525bd3caf9cc1acTim Peters 701a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except(self): 711a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 721a572964507512f3becd0c934525bd3caf9cc1acTim Peters 731a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 741a572964507512f3becd0c934525bd3caf9cc1acTim Peters raise Exception, 'ahoy!' 751a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 761a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 771a572964507512f3becd0c934525bd3caf9cc1acTim Peters 781a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_except) 791a572964507512f3becd0c934525bd3caf9cc1acTim Peters 801a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_no_exception(self): 811a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 821a572964507512f3becd0c934525bd3caf9cc1acTim Peters 831a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 841a572964507512f3becd0c934525bd3caf9cc1acTim Peters pass 851a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 861a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 871a572964507512f3becd0c934525bd3caf9cc1acTim Peters 881a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_except) 891a572964507512f3becd0c934525bd3caf9cc1acTim Peters 901a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_else(self): 911a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 921a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = False 931a572964507512f3becd0c934525bd3caf9cc1acTim Peters 941a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 951a572964507512f3becd0c934525bd3caf9cc1acTim Peters raise Exception, 'foo!' 961a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 971a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 981a572964507512f3becd0c934525bd3caf9cc1acTim Peters else: 991a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = True 1001a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1011a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_else) 1021a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_except) 1031a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1041a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_except_else_no_exception(self): 1051a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 1061a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = False 1071a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1081a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 1091a572964507512f3becd0c934525bd3caf9cc1acTim Peters pass 1101a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 1111a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 1121a572964507512f3becd0c934525bd3caf9cc1acTim Peters else: 1131a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = True 1141a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1151a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_except) 1161a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_else) 1171a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1181a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_try_finally_no_exception(self): 1191a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 1201a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1211a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 1221a572964507512f3becd0c934525bd3caf9cc1acTim Peters pass 1231a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 1241a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 1251a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1261a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 1271a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1281a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_nested(self): 1291a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 1301a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_except = False 1311a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_finally = False 1321a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1331a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 1341a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 1351a572964507512f3becd0c934525bd3caf9cc1acTim Peters raise Exception, 'inner exception' 1361a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 1371a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_except = True 1381a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 1391a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_finally = True 1401a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 1411a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 1421a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1431a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_inner_except) 1441a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_inner_finally) 1451a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 1461a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1471a572964507512f3becd0c934525bd3caf9cc1acTim Peters def test_nested_else(self): 1481a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = False 1491a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = False 1501a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = False 1511a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_except = False 1521a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_else = False 1531a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1541a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 1551a572964507512f3becd0c934525bd3caf9cc1acTim Peters try: 1561a572964507512f3becd0c934525bd3caf9cc1acTim Peters pass 1571a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 1581a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_except = True 1591a572964507512f3becd0c934525bd3caf9cc1acTim Peters else: 1601a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_inner_else = True 1611a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1621a572964507512f3becd0c934525bd3caf9cc1acTim Peters raise Exception, 'outer exception' 1631a572964507512f3becd0c934525bd3caf9cc1acTim Peters except: 1641a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_except = True 1651a572964507512f3becd0c934525bd3caf9cc1acTim Peters else: 1661a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_else = True 1671a572964507512f3becd0c934525bd3caf9cc1acTim Peters finally: 1681a572964507512f3becd0c934525bd3caf9cc1acTim Peters hit_finally = True 1691a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1701a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_inner_except) 1711a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_inner_else) 1721a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertFalse(hit_else) 1731a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_finally) 1741a572964507512f3becd0c934525bd3caf9cc1acTim Peters self.assertTrue(hit_except) 1751a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1761a572964507512f3becd0c934525bd3caf9cc1acTim Petersdef test_main(): 1771a572964507512f3becd0c934525bd3caf9cc1acTim Peters run_unittest(ExceptionTestCase) 1781a572964507512f3becd0c934525bd3caf9cc1acTim Peters 1791a572964507512f3becd0c934525bd3caf9cc1acTim Petersif __name__ == '__main__': 1801a572964507512f3becd0c934525bd3caf9cc1acTim Peters test_main() 181