mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			32 lines
		
	
	
	
		
			1,012 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
	
		
			1,012 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import textwrap
							 | 
						||
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from test import support
							 | 
						||
| 
								 | 
							
								from test.support.script_helper import assert_python_ok
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestLLTrace(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_lltrace_does_not_crash_on_subscript_operator(self):
							 | 
						||
| 
								 | 
							
								        # If this test fails, it will reproduce a crash reported as
							 | 
						||
| 
								 | 
							
								        # bpo-34113. The crash happened at the command line console of
							 | 
						||
| 
								 | 
							
								        # debug Python builds with __ltrace__ enabled (only possible in console),
							 | 
						||
| 
								 | 
							
								        # when the interal Python stack was negatively adjusted
							 | 
						||
| 
								 | 
							
								        with open(support.TESTFN, 'w') as fd:
							 | 
						||
| 
								 | 
							
								            self.addCleanup(os.unlink, support.TESTFN)
							 | 
						||
| 
								 | 
							
								            fd.write(textwrap.dedent("""\
							 | 
						||
| 
								 | 
							
								            import code
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            console = code.InteractiveConsole()
							 | 
						||
| 
								 | 
							
								            console.push('__ltrace__ = 1')
							 | 
						||
| 
								 | 
							
								            console.push('a = [1, 2, 3]')
							 | 
						||
| 
								 | 
							
								            console.push('a[0] = 1')
							 | 
						||
| 
								 | 
							
								            print('unreachable if bug exists')
							 | 
						||
| 
								 | 
							
								            """))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            assert_python_ok(support.TESTFN)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								    unittest.main()
							 |