mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	 23a567c11c
			
		
	
	
		23a567c11c
		
			
		
	
	
	
	
		
			
			Starting stack viewer when user code is running, including when Debugger is active, hangs or crashes IDLE. Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| "Test mainmenu, coverage 100%."
 | |
| # Reported as 88%; mocking turtledemo absence would have no point.
 | |
| 
 | |
| from idlelib import mainmenu
 | |
| import re
 | |
| import unittest
 | |
| 
 | |
| 
 | |
| class MainMenuTest(unittest.TestCase):
 | |
| 
 | |
|     def test_menudefs(self):
 | |
|         actual = [item[0] for item in mainmenu.menudefs]
 | |
|         expect = ['file', 'edit', 'format', 'run', 'shell',
 | |
|                   'debug', 'options', 'window', 'help']
 | |
|         self.assertEqual(actual, expect)
 | |
| 
 | |
|     def test_default_keydefs(self):
 | |
|         self.assertGreaterEqual(len(mainmenu.default_keydefs), 50)
 | |
| 
 | |
|     def test_tcl_indexes(self):
 | |
|         # Test tcl patterns used to find menuitem to alter.
 | |
|         # On failure, change pattern here and in function(s).
 | |
|         # Patterns here have '.*' for re instead of '*' for tcl.
 | |
|         for menu, pattern in (
 | |
|             ('debug', '.*tack.*iewer'),  # PyShell.debug_menu_postcommand
 | |
|             ('options', '.*ode.*ontext'),  # EW.__init__, CodeContext.toggle...
 | |
|             ('options', '.*ine.*umbers'),  # EW.__init__, EW.toggle...event.
 | |
|             ):
 | |
|             with self.subTest(menu=menu, pattern=pattern):
 | |
|                 for menutup in mainmenu.menudefs:
 | |
|                     if menutup[0] == menu:
 | |
|                         break
 | |
|                 else:
 | |
|                     self.assertTrue(0, f"{menu} not in menudefs")
 | |
|                 self.assertTrue(any(re.search(pattern, menuitem[0])
 | |
|                                     for menuitem in menutup[1]
 | |
|                                     if menuitem is not None),  # Separator.
 | |
|                                 f"{pattern} not in {menu}")
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(verbosity=2)
 |