From d0d9fa8c5e30aff71b6d5e8b2673396622f33270 Mon Sep 17 00:00:00 2001 From: Cheryl Sabella Date: Sat, 25 Jan 2020 04:00:54 -0500 Subject: bpo-39388: IDLE: Fix bug when cancelling out of configdialog (GH-18068) Co-authored-by: Terry Jan Reedy --- Lib/idlelib/NEWS.txt | 4 +++- Lib/idlelib/configdialog.py | 1 + Lib/idlelib/idle_test/test_configdialog.py | 21 ++++++++++++++------- .../IDLE/2020-01-25-02-26-45.bpo-39388.x4TQNh.rst | 1 + 4 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2020-01-25-02-26-45.bpo-39388.x4TQNh.rst diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 708292e..eda7c27 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,7 +3,9 @@ Released on 2020-10-05? ====================================== -bpo-39050: Make Settings dialog Help button work again. +bpo-39388: Settings dialog Cancel button cancels pending changes. + +bpo-39050: Settings dialog Help button again displays help text. bpo-32989: Add tests for editor newline_and_indent_event method. Remove unneeded arguments and dead code from pyparse diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 0e007b5..2f95c9c 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -191,6 +191,7 @@ class ConfigDialog(Toplevel): Methods: destroy: inherited """ + changes.clear() self.destroy() def destroy(self): diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 7c575d0..817a3521 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -47,17 +47,24 @@ def tearDownModule(): root.destroy() root = dialog = None -class ConfigDialogTest(unittest.TestCase): - def test_help(self): +class DialogTest(unittest.TestCase): + + @mock.patch(__name__+'.dialog.destroy', new_callable=Func) + def test_cancel(self, destroy): + changes['main']['something'] = 1 + dialog.cancel() + self.assertEqual(changes['main'], {}) + self.assertEqual(destroy.called, 1) + + @mock.patch('idlelib.configdialog.view_text', new_callable=Func) + def test_help(self, view): dialog.note.select(dialog.keyspage) - saved = configdialog.view_text - view = configdialog.view_text = Func() dialog.help() s = view.kwds['contents'] - self.assertTrue(s.startswith('When you click')) - self.assertTrue(s.endswith('a different name.\n')) - configdialog.view_text = saved + self.assertTrue(s.startswith('When you click') and + s.endswith('a different name.\n')) + class FontPageTest(unittest.TestCase): """Test that font widgets enable users to make font changes. diff --git a/Misc/NEWS.d/next/IDLE/2020-01-25-02-26-45.bpo-39388.x4TQNh.rst b/Misc/NEWS.d/next/IDLE/2020-01-25-02-26-45.bpo-39388.x4TQNh.rst new file mode 100644 index 0000000..42bbfb1 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2020-01-25-02-26-45.bpo-39388.x4TQNh.rst @@ -0,0 +1 @@ +IDLE Settings Cancel button now cancels pending changes -- cgit v0.12