bpo-27115: Use Query subclass for IDLE editor Goto (GH-18871)

Replace tkinter tkSimpleDialog.askinteger with a standard IDLE query dialog.
The new box checks for positivity before returning.
This commit is contained in:
Terry Jan Reedy 2020-03-09 16:51:20 -04:00 committed by GitHub
parent e7cab7f780
commit 363fab83b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 12 deletions

View file

@ -138,6 +138,33 @@ class ModuleNameTest(unittest.TestCase):
self.assertEqual(dialog.entry_error['text'], '')
class GotoTest(unittest.TestCase):
"Test Goto subclass of Query."
class Dummy_ModuleName:
entry_ok = query.Goto.entry_ok # Function being tested.
def __init__(self, dummy_entry):
self.entry = Var(value=dummy_entry)
self.entry_error = {'text': ''}
def showerror(self, message):
self.entry_error['text'] = message
def test_bogus_goto(self):
dialog = self.Dummy_ModuleName('a')
self.assertEqual(dialog.entry_ok(), None)
self.assertIn('not a base 10 integer', dialog.entry_error['text'])
def test_bad_goto(self):
dialog = self.Dummy_ModuleName('0')
self.assertEqual(dialog.entry_ok(), None)
self.assertIn('not a positive integer', dialog.entry_error['text'])
def test_good_goto(self):
dialog = self.Dummy_ModuleName('1')
self.assertEqual(dialog.entry_ok(), 1)
self.assertEqual(dialog.entry_error['text'], '')
# 3 HelpSource test classes each test one method.
class HelpsourceBrowsefileTest(unittest.TestCase):
@ -363,6 +390,22 @@ class ModulenameGuiTest(unittest.TestCase):
root.destroy()
class GotoGuiTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
requires('gui')
def test_click_module_name(self):
root = Tk()
root.withdraw()
dialog = query.Goto(root, 'T', 't', _utest=True)
dialog.entry.insert(0, '22')
dialog.button_ok.invoke()
self.assertEqual(dialog.result, 22)
root.destroy()
class HelpsourceGuiTest(unittest.TestCase):
@classmethod