mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| from unittest import mock
 | |
| 
 | |
| from test.support import captured_stderr
 | |
| import idlelib.run as idlerun
 | |
| 
 | |
| 
 | |
| class RunTest(unittest.TestCase):
 | |
|     def test_print_exception_unhashable(self):
 | |
|         class UnhashableException(Exception):
 | |
|             def __eq__(self, other):
 | |
|                 return True
 | |
| 
 | |
|         ex1 = UnhashableException('ex1')
 | |
|         ex2 = UnhashableException('ex2')
 | |
|         try:
 | |
|             raise ex2 from ex1
 | |
|         except UnhashableException:
 | |
|             try:
 | |
|                 raise ex1
 | |
|             except UnhashableException:
 | |
|                 with captured_stderr() as output:
 | |
|                     with mock.patch.object(idlerun,
 | |
|                                            'cleanup_traceback') as ct:
 | |
|                         ct.side_effect = lambda t, e: t
 | |
|                         idlerun.print_exception()
 | |
| 
 | |
|         tb = output.getvalue().strip().splitlines()
 | |
|         self.assertEqual(11, len(tb))
 | |
|         self.assertIn('UnhashableException: ex2', tb[3])
 | |
|         self.assertIn('UnhashableException: ex1', tb[10])
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(verbosity=2)
 | 
