summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorterryjreedy <tjreedy@udel.edu>2017-07-11 23:50:10 (GMT)
committerGitHub <noreply@github.com>2017-07-11 23:50:10 (GMT)
commitc0179483f13be81910ed73889dcad92528e20ef2 (patch)
tree256e73f5a012fa4fc8da24a01df698370a122a34 /Lib
parent675c1adfe5c87573e81fb295ccad7b6cfa03a3ee (diff)
downloadcpython-c0179483f13be81910ed73889dcad92528e20ef2.zip
cpython-c0179483f13be81910ed73889dcad92528e20ef2.tar.gz
cpython-c0179483f13be81910ed73889dcad92528e20ef2.tar.bz2
[3.6] bpo-30779: IDLE: fix changes.delete_section calls in configdialog (GH-2667) (#2674)
Also improve test of config.ConfigChanges.delete_section. Original patch by Cheryl Sabella. (cherry picked from commit 6d13b22)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/config.py3
-rw-r--r--Lib/idlelib/configdialog.py4
-rw-r--r--Lib/idlelib/idle_test/test_config.py7
3 files changed, 9 insertions, 5 deletions
diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py
index ed37f11..bbb3e3c 100644
--- a/Lib/idlelib/config.py
+++ b/Lib/idlelib/config.py
@@ -794,7 +794,8 @@ class ConfigChanges(dict):
add_option: Add option and value to changes.
save_option: Save option and value to config parser.
save_all: Save all the changes to the config parser and file.
- delete_section: Delete section if it exists.
+ delete_section: If section exists,
+ delete from changes, userCfg, and file.
clear: Clear all changes by clearing each page.
"""
def __init__(self):
diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py
index 6dc075f..a2cfaab 100644
--- a/Lib/idlelib/configdialog.py
+++ b/Lib/idlelib/configdialog.py
@@ -839,7 +839,7 @@ class ConfigDialog(Toplevel):
return
self.deactivate_current_config()
# Remove key set from changes, config, and file.
- changes.remove(keyset_name)
+ changes.delete_section('keys', keyset_name)
# Reload user key set list.
item_list = idleConf.GetSectionList('user', 'keys')
item_list.sort()
@@ -873,7 +873,7 @@ class ConfigDialog(Toplevel):
return
self.deactivate_current_config()
# Remove theme from changes, config, and file.
- changes.delete_section('highlight')
+ changes.delete_section('highlight', theme_name)
# Reload user theme list.
item_list = idleConf.GetSectionList('user', 'highlight')
item_list.sort()
diff --git a/Lib/idlelib/idle_test/test_config.py b/Lib/idlelib/idle_test/test_config.py
index e157bbb..a8e3a3b 100644
--- a/Lib/idlelib/idle_test/test_config.py
+++ b/Lib/idlelib/idle_test/test_config.py
@@ -188,6 +188,7 @@ class ChangesTest(unittest.TestCase):
userkeys.remove_section('Ksec')
def test_save_help(self):
+ # Any change to HelpFiles overwrites entire section.
changes = self.changes
changes.save_option('main', 'HelpFiles', 'IDLE', 'idledoc')
changes.add_option('main', 'HelpFiles', 'ELDI', 'codeldi')
@@ -207,10 +208,12 @@ class ChangesTest(unittest.TestCase):
changes.delete_section('main', 'fake') # Test no exception.
self.assertEqual(changes, self.loaded) # Test nothing deleted.
for cfgtype, section in (('main', 'Msec'), ('keys', 'Ksec')):
+ testcfg[cfgtype].SetOption(section, 'name', 'value')
changes.delete_section(cfgtype, section)
with self.assertRaises(KeyError):
- changes[cfgtype][section] # Test section gone.
- # TODO Test change to userkeys and maybe save call.
+ changes[cfgtype][section] # Test section gone from changes
+ testcfg[cfgtype][section] # and from mock userCfg.
+ # TODO test for save call.
def test_clear(self):
changes = self.load()