bpo-30779: IDLE: fix changes.delete_section calls in configdialog (#2667)
Also improve test of config.ConfigChanges.delete_section. Original patch by Cheryl Sabella.
This commit is contained in:
parent
f52325598e
commit
6d13b22e3a
|
@ -794,7 +794,8 @@ class ConfigChanges(dict):
|
||||||
add_option: Add option and value to changes.
|
add_option: Add option and value to changes.
|
||||||
save_option: Save option and value to config parser.
|
save_option: Save option and value to config parser.
|
||||||
save_all: Save all the changes to the config parser and file.
|
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.
|
clear: Clear all changes by clearing each page.
|
||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
|
@ -839,7 +839,7 @@ class ConfigDialog(Toplevel):
|
||||||
return
|
return
|
||||||
self.deactivate_current_config()
|
self.deactivate_current_config()
|
||||||
# Remove key set from changes, config, and file.
|
# Remove key set from changes, config, and file.
|
||||||
changes.remove(keyset_name)
|
changes.delete_section('keys', keyset_name)
|
||||||
# Reload user key set list.
|
# Reload user key set list.
|
||||||
item_list = idleConf.GetSectionList('user', 'keys')
|
item_list = idleConf.GetSectionList('user', 'keys')
|
||||||
item_list.sort()
|
item_list.sort()
|
||||||
|
@ -873,7 +873,7 @@ class ConfigDialog(Toplevel):
|
||||||
return
|
return
|
||||||
self.deactivate_current_config()
|
self.deactivate_current_config()
|
||||||
# Remove theme from changes, config, and file.
|
# Remove theme from changes, config, and file.
|
||||||
changes.delete_section('highlight')
|
changes.delete_section('highlight', theme_name)
|
||||||
# Reload user theme list.
|
# Reload user theme list.
|
||||||
item_list = idleConf.GetSectionList('user', 'highlight')
|
item_list = idleConf.GetSectionList('user', 'highlight')
|
||||||
item_list.sort()
|
item_list.sort()
|
||||||
|
|
|
@ -188,6 +188,7 @@ class ChangesTest(unittest.TestCase):
|
||||||
userkeys.remove_section('Ksec')
|
userkeys.remove_section('Ksec')
|
||||||
|
|
||||||
def test_save_help(self):
|
def test_save_help(self):
|
||||||
|
# Any change to HelpFiles overwrites entire section.
|
||||||
changes = self.changes
|
changes = self.changes
|
||||||
changes.save_option('main', 'HelpFiles', 'IDLE', 'idledoc')
|
changes.save_option('main', 'HelpFiles', 'IDLE', 'idledoc')
|
||||||
changes.add_option('main', 'HelpFiles', 'ELDI', 'codeldi')
|
changes.add_option('main', 'HelpFiles', 'ELDI', 'codeldi')
|
||||||
|
@ -207,10 +208,12 @@ class ChangesTest(unittest.TestCase):
|
||||||
changes.delete_section('main', 'fake') # Test no exception.
|
changes.delete_section('main', 'fake') # Test no exception.
|
||||||
self.assertEqual(changes, self.loaded) # Test nothing deleted.
|
self.assertEqual(changes, self.loaded) # Test nothing deleted.
|
||||||
for cfgtype, section in (('main', 'Msec'), ('keys', 'Ksec')):
|
for cfgtype, section in (('main', 'Msec'), ('keys', 'Ksec')):
|
||||||
|
testcfg[cfgtype].SetOption(section, 'name', 'value')
|
||||||
changes.delete_section(cfgtype, section)
|
changes.delete_section(cfgtype, section)
|
||||||
with self.assertRaises(KeyError):
|
with self.assertRaises(KeyError):
|
||||||
changes[cfgtype][section] # Test section gone.
|
changes[cfgtype][section] # Test section gone from changes
|
||||||
# TODO Test change to userkeys and maybe save call.
|
testcfg[cfgtype][section] # and from mock userCfg.
|
||||||
|
# TODO test for save call.
|
||||||
|
|
||||||
def test_clear(self):
|
def test_clear(self):
|
||||||
changes = self.load()
|
changes = self.load()
|
||||||
|
|
Loading…
Reference in New Issue