mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	I have compared output between pre- and post-patch runs of these tests to make sure there's nothing missing and nothing broken, on both Windows and Linux. The only differences I found were actually tests that were previously *not* run.
		
			
				
	
	
		
			176 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
 | 
						|
import unittest
 | 
						|
 | 
						|
class ExceptionTestCase(unittest.TestCase):
 | 
						|
    def test_try_except_else_finally(self):
 | 
						|
        hit_except = False
 | 
						|
        hit_else = False
 | 
						|
        hit_finally = False
 | 
						|
 | 
						|
        try:
 | 
						|
            raise Exception('nyaa!')
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        else:
 | 
						|
            hit_else = True
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertTrue(hit_except)
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
        self.assertFalse(hit_else)
 | 
						|
 | 
						|
    def test_try_except_else_finally_no_exception(self):
 | 
						|
        hit_except = False
 | 
						|
        hit_else = False
 | 
						|
        hit_finally = False
 | 
						|
 | 
						|
        try:
 | 
						|
            pass
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        else:
 | 
						|
            hit_else = True
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertFalse(hit_except)
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
        self.assertTrue(hit_else)
 | 
						|
 | 
						|
    def test_try_except_finally(self):
 | 
						|
        hit_except = False
 | 
						|
        hit_finally = False
 | 
						|
 | 
						|
        try:
 | 
						|
            raise Exception('yarr!')
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertTrue(hit_except)
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
 | 
						|
    def test_try_except_finally_no_exception(self):
 | 
						|
        hit_except = False
 | 
						|
        hit_finally = False
 | 
						|
 | 
						|
        try:
 | 
						|
            pass
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertFalse(hit_except)
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
 | 
						|
    def test_try_except(self):
 | 
						|
        hit_except = False
 | 
						|
 | 
						|
        try:
 | 
						|
            raise Exception('ahoy!')
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
 | 
						|
        self.assertTrue(hit_except)
 | 
						|
 | 
						|
    def test_try_except_no_exception(self):
 | 
						|
        hit_except = False
 | 
						|
 | 
						|
        try:
 | 
						|
            pass
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
 | 
						|
        self.assertFalse(hit_except)
 | 
						|
 | 
						|
    def test_try_except_else(self):
 | 
						|
        hit_except = False
 | 
						|
        hit_else = False
 | 
						|
 | 
						|
        try:
 | 
						|
            raise Exception('foo!')
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        else:
 | 
						|
            hit_else = True
 | 
						|
 | 
						|
        self.assertFalse(hit_else)
 | 
						|
        self.assertTrue(hit_except)
 | 
						|
 | 
						|
    def test_try_except_else_no_exception(self):
 | 
						|
        hit_except = False
 | 
						|
        hit_else = False
 | 
						|
 | 
						|
        try:
 | 
						|
            pass
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        else:
 | 
						|
            hit_else = True
 | 
						|
 | 
						|
        self.assertFalse(hit_except)
 | 
						|
        self.assertTrue(hit_else)
 | 
						|
 | 
						|
    def test_try_finally_no_exception(self):
 | 
						|
        hit_finally = False
 | 
						|
 | 
						|
        try:
 | 
						|
            pass
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
 | 
						|
    def test_nested(self):
 | 
						|
        hit_finally = False
 | 
						|
        hit_inner_except = False
 | 
						|
        hit_inner_finally = False
 | 
						|
 | 
						|
        try:
 | 
						|
            try:
 | 
						|
                raise Exception('inner exception')
 | 
						|
            except:
 | 
						|
                hit_inner_except = True
 | 
						|
            finally:
 | 
						|
                hit_inner_finally = True
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertTrue(hit_inner_except)
 | 
						|
        self.assertTrue(hit_inner_finally)
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
 | 
						|
    def test_nested_else(self):
 | 
						|
        hit_else = False
 | 
						|
        hit_finally = False
 | 
						|
        hit_except = False
 | 
						|
        hit_inner_except = False
 | 
						|
        hit_inner_else = False
 | 
						|
 | 
						|
        try:
 | 
						|
            try:
 | 
						|
                pass
 | 
						|
            except:
 | 
						|
                hit_inner_except = True
 | 
						|
            else:
 | 
						|
                hit_inner_else = True
 | 
						|
 | 
						|
            raise Exception('outer exception')
 | 
						|
        except:
 | 
						|
            hit_except = True
 | 
						|
        else:
 | 
						|
            hit_else = True
 | 
						|
        finally:
 | 
						|
            hit_finally = True
 | 
						|
 | 
						|
        self.assertFalse(hit_inner_except)
 | 
						|
        self.assertTrue(hit_inner_else)
 | 
						|
        self.assertFalse(hit_else)
 | 
						|
        self.assertTrue(hit_finally)
 | 
						|
        self.assertTrue(hit_except)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    unittest.main()
 |