diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2017-07-28 21:00:02 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-28 21:00:02 (GMT) |
commit | 5d0f30aae5fccc99690923fc5c7cb58de8ad7eec (patch) | |
tree | b76599a39ab1ba391e446b9d87f0ea51ad009aaf /Lib | |
parent | 5b59154c0d3d91c0766b9177f6b737b1abcbf3f6 (diff) | |
download | cpython-5d0f30aae5fccc99690923fc5c7cb58de8ad7eec.zip cpython-5d0f30aae5fccc99690923fc5c7cb58de8ad7eec.tar.gz cpython-5d0f30aae5fccc99690923fc5c7cb58de8ad7eec.tar.bz2 |
bpo-30853: IDLE - touch-up configdialog.VarTrace and tests. (#2936)
Add clear method for tests. Adjust tests to use global instance.
Remove unneeded ConfigDialog method.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/idlelib/configdialog.py | 10 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_configdialog.py | 29 |
2 files changed, 23 insertions, 16 deletions
diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 92155e3..87e0d68 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -99,7 +99,6 @@ class ConfigDialog(Toplevel): create_page_extensions create_action_buttons load_configs: Load pages except for extensions. - remove_var_callbacks activate_config_changes: Tell editors to reload. """ self.tab_pages = TabbedPageSet(self, @@ -133,10 +132,6 @@ class ConfigDialog(Toplevel): self.load_general_cfg() # note: extension page handled separately - def remove_var_callbacks(self): - "Remove callbacks to prevent memory leaks." - tracers.detach() - def create_action_buttons(self): """Return frame of action buttons for dialog. @@ -1846,6 +1841,11 @@ class VarTrace: self.untraced = [] self.traced = [] + def clear(self): + "Clear lists (for tests)." + self.untraced.clear() + self.traced.clear() + def add(self, var, callback): """Add (var, callback) tuple to untraced list. diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index 7296075..cf6c3b3 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -11,7 +11,7 @@ from unittest import mock from idlelib.idle_test.mock_idle import Func from tkinter import Tk, IntVar, BooleanVar, DISABLED, NORMAL from idlelib import config -from idlelib.configdialog import ConfigDialog, idleConf, changes, VarTrace +from idlelib.configdialog import idleConf, changes, tracers # Tests should not depend on fortuitous user configurations. # They must not affect actual user .cfg files. @@ -35,12 +35,12 @@ def setUpModule(): idleConf.userCfg = testcfg root = Tk() # root.withdraw() # Comment out, see issue 30870 - dialog = ConfigDialog(root, 'Test', _utest=True) + dialog = configdialog.ConfigDialog(root, 'Test', _utest=True) def tearDownModule(): global root, dialog idleConf.userCfg = usercfg - dialog.remove_var_callbacks() + tracers.detach() del dialog root.update_idletasks() root.destroy() @@ -423,14 +423,14 @@ class GeneralTest(unittest.TestCase): d.update_help_changes = Func() -class TestVarTrace(unittest.TestCase): +class VarTraceTest(unittest.TestCase): def setUp(self): changes.clear() + tracers.clear() self.v1 = IntVar(root) self.v2 = BooleanVar(root) self.called = 0 - self.tracers = VarTrace() def tearDown(self): del self.v1, self.v2 @@ -442,11 +442,19 @@ class TestVarTrace(unittest.TestCase): pass def test_init(self): - self.assertEqual(self.tracers.untraced, []) - self.assertEqual(self.tracers.traced, []) + tracers.__init__() + self.assertEqual(tracers.untraced, []) + self.assertEqual(tracers.traced, []) + + def test_clear(self): + tracers.untraced.append(0) + tracers.traced.append(1) + tracers.clear() + self.assertEqual(tracers.untraced, []) + self.assertEqual(tracers.traced, []) def test_add(self): - tr = self.tracers + tr = tracers func = Func() cb = tr.make_callback = mock.Mock(return_value=func) @@ -469,8 +477,7 @@ class TestVarTrace(unittest.TestCase): del tr.make_callback def test_make_callback(self): - tr = self.tracers - cb = tr.make_callback(self.v1, ('main', 'section', 'option')) + cb = tracers.make_callback(self.v1, ('main', 'section', 'option')) self.assertTrue(callable(cb)) self.v1.set(42) # Not attached, so set didn't invoke the callback. @@ -481,7 +488,7 @@ class TestVarTrace(unittest.TestCase): self.assertEqual(changes['main']['section']['option'], '42') def test_attach_detach(self): - tr = self.tracers + tr = tracers v1 = tr.add(self.v1, self.var_changed_increment) v2 = tr.add(self.v2, self.var_changed_boolean) expected = [(v1, self.var_changed_increment), |