diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2016-08-25 02:08:01 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2016-08-25 02:08:01 (GMT) |
commit | 5acf4e563f598a77824014b3ab697f70815555db (patch) | |
tree | 639be5da3deb2e6d9f404a8d9b2ad7bbcd71f525 /Lib/idlelib | |
parent | 3f1057a4b62d8c94ae77f34f950b74a45499b218 (diff) | |
download | cpython-5acf4e563f598a77824014b3ab697f70815555db.zip cpython-5acf4e563f598a77824014b3ab697f70815555db.tar.gz cpython-5acf4e563f598a77824014b3ab697f70815555db.tar.bz2 |
Issue #27821: Fix bug in idlelib.comfig function and add new tests.
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/config.py | 2 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_config.py | 106 |
2 files changed, 85 insertions, 23 deletions
diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py index f2437a8..d2f0b13 100644 --- a/Lib/idlelib/config.py +++ b/Lib/idlelib/config.py @@ -394,7 +394,7 @@ class IdleConf: 'name2' may still be set, but it is ignored. """ cfgname = 'highlight' if section == 'Theme' else 'keys' - default = self.GetOption('main', 'Theme', 'default', + default = self.GetOption('main', section, 'default', type='bool', default=True) name = '' if default: diff --git a/Lib/idlelib/idle_test/test_config.py b/Lib/idlelib/idle_test/test_config.py index 53665cd..a3fa1a3 100644 --- a/Lib/idlelib/idle_test/test_config.py +++ b/Lib/idlelib/idle_test/test_config.py @@ -28,53 +28,115 @@ def tearDownModule(): class CurrentColorKeysTest(unittest.TestCase): - """Test correct scenarios for colorkeys and wrap functions. + """ Test colorkeys function with user config [Theme] and [Keys] patterns. - The 5 correct patterns are possible results of config dialog. + colorkeys = config.IdleConf.current_colors_and_keys + Test all patterns written by IDLE and some errors + Item 'default' should really be 'builtin' (versus 'custom). """ colorkeys = idleConf.current_colors_and_keys + default_theme = 'IDLE Classic' + default_keys = idleConf.default_keys() - def test_old_default(self): - # name2 must be blank + def test_old_builtin_theme(self): + # On initial installation, user main is blank. + self.assertEqual(self.colorkeys('Theme'), self.default_theme) + # For old default, name2 must be blank. usermain.read_string(''' [Theme] - default= 1 + default = True ''') - self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic') + # IDLE omits 'name' for default old builtin theme. + self.assertEqual(self.colorkeys('Theme'), self.default_theme) + # IDLE adds 'name' for non-default old builtin theme. usermain['Theme']['name'] = 'IDLE New' self.assertEqual(self.colorkeys('Theme'), 'IDLE New') - usermain['Theme']['name'] = 'non-default' # error - self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic') + # Erroneous non-default old builtin reverts to default. + usermain['Theme']['name'] = 'non-existent' + self.assertEqual(self.colorkeys('Theme'), self.default_theme) usermain.remove_section('Theme') - def test_new_default(self): - # name2 overrides name + def test_new_builtin_theme(self): + # IDLE writes name2 for new builtins. usermain.read_string(''' [Theme] - default= 1 - name= IDLE New - name2= IDLE Dark + default = True + name2 = IDLE Dark ''') self.assertEqual(self.colorkeys('Theme'), 'IDLE Dark') - usermain['Theme']['name2'] = 'non-default' # error - self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic') + # Leftover 'name', not removed, is ignored. + usermain['Theme']['name'] = 'IDLE New' + self.assertEqual(self.colorkeys('Theme'), 'IDLE Dark') + # Erroneous non-default new builtin reverts to default. + usermain['Theme']['name2'] = 'non-existent' + self.assertEqual(self.colorkeys('Theme'), self.default_theme) usermain.remove_section('Theme') - def test_user_override(self): - # name2 does not matter + def test_user_override_theme(self): + # Erroneous custom name (no definition) reverts to default. usermain.read_string(''' [Theme] - default= 0 - name= Custom Dark - ''') # error until set userhigh - self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic') + default = False + name = Custom Dark + ''') + self.assertEqual(self.colorkeys('Theme'), self.default_theme) + # Custom name is valid with matching Section name. userhigh.read_string('[Custom Dark]\na=b') self.assertEqual(self.colorkeys('Theme'), 'Custom Dark') - usermain['Theme']['name2'] = 'IDLE Dark' + # Name2 is ignored. + usermain['Theme']['name2'] = 'non-existent' self.assertEqual(self.colorkeys('Theme'), 'Custom Dark') usermain.remove_section('Theme') userhigh.remove_section('Custom Dark') + def test_old_builtin_keys(self): + # On initial installation, user main is blank. + self.assertEqual(self.colorkeys('Keys'), self.default_keys) + # For old default, name2 must be blank, name is always used. + usermain.read_string(''' + [Keys] + default = True + name = IDLE Classic Unix + ''') + self.assertEqual(self.colorkeys('Keys'), 'IDLE Classic Unix') + # Erroneous non-default old builtin reverts to default. + usermain['Keys']['name'] = 'non-existent' + self.assertEqual(self.colorkeys('Keys'), self.default_keys) + usermain.remove_section('Keys') + + def test_new_builtin_keys(self): + # IDLE writes name2 for new builtins. + usermain.read_string(''' + [Keys] + default = True + name2 = IDLE Modern Unix + ''') + self.assertEqual(self.colorkeys('Keys'), 'IDLE Modern Unix') + # Leftover 'name', not removed, is ignored. + usermain['Keys']['name'] = 'IDLE Classic Unix' + self.assertEqual(self.colorkeys('Keys'), 'IDLE Modern Unix') + # Erroneous non-default new builtin reverts to default. + usermain['Keys']['name2'] = 'non-existent' + self.assertEqual(self.colorkeys('Keys'), self.default_keys) + usermain.remove_section('Keys') + + def test_user_override_keys(self): + # Erroneous custom name (no definition) reverts to default. + usermain.read_string(''' + [Keys] + default = False + name = Custom Keys + ''') + self.assertEqual(self.colorkeys('Keys'), self.default_keys) + # Custom name is valid with matching Section name. + userkeys.read_string('[Custom Keys]\na=b') + self.assertEqual(self.colorkeys('Keys'), 'Custom Keys') + # Name2 is ignored. + usermain['Keys']['name2'] = 'non-existent' + self.assertEqual(self.colorkeys('Keys'), 'Custom Keys') + usermain.remove_section('Keys') + userkeys.remove_section('Custom Keys') + class WarningTest(unittest.TestCase): |