123456789101112131415161718192021222324252627282930313233343536373839404142 |
- "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)
|