cpython: f198457d1475 (original) (raw)
--- 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',[](#l1.7)
default = self.GetOption('main', section, 'default',[](#l1.8) type='bool', default=True)[](#l1.9) name = ''[](#l1.10) if default:[](#l1.11)
--- 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):
The 5 correct patterns are possible results of config dialog.[](#l2.10)
colorkeys = config.IdleConf.current_colors_and_keys[](#l2.11)
Test all patterns written by IDLE and some errors[](#l2.12)
""" colorkeys = idleConf.current_colors_and_keysItem 'default' should really be 'builtin' (versus 'custom).[](#l2.13)
- default_theme = 'IDLE Classic'
- default_keys = idleConf.default_keys()
- def test_old_builtin_theme(self):
# On initial installation, user main is blank.[](#l2.22)
self.assertEqual(self.colorkeys('Theme'), self.default_theme)[](#l2.23)
# For old default, name2 must be blank.[](#l2.24) usermain.read_string('''[](#l2.25) [Theme][](#l2.26)
default= 1[](#l2.27)
default = True[](#l2.28) ''')[](#l2.29)
self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic')[](#l2.30)
# IDLE omits 'name' for default old builtin theme.[](#l2.31)
self.assertEqual(self.colorkeys('Theme'), self.default_theme)[](#l2.32)
# IDLE adds 'name' for non-default old builtin theme.[](#l2.33) usermain['Theme']['name'] = 'IDLE New'[](#l2.34) self.assertEqual(self.colorkeys('Theme'), 'IDLE New')[](#l2.35)
usermain['Theme']['name'] = 'non-default' # error[](#l2.36)
self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic')[](#l2.37)
# Erroneous non-default old builtin reverts to default.[](#l2.38)
usermain['Theme']['name'] = 'non-existent'[](#l2.39)
self.assertEqual(self.colorkeys('Theme'), self.default_theme)[](#l2.40) usermain.remove_section('Theme')[](#l2.41)
- def test_new_builtin_theme(self):
# IDLE writes name2 for new builtins.[](#l2.46) usermain.read_string('''[](#l2.47) [Theme][](#l2.48)
default= 1[](#l2.49)
name= IDLE New[](#l2.50)
name2= IDLE Dark[](#l2.51)
default = True[](#l2.52)
name2 = IDLE Dark[](#l2.53) ''')[](#l2.54) self.assertEqual(self.colorkeys('Theme'), 'IDLE Dark')[](#l2.55)
usermain['Theme']['name2'] = 'non-default' # error[](#l2.56)
self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic')[](#l2.57)
# Leftover 'name', not removed, is ignored.[](#l2.58)
usermain['Theme']['name'] = 'IDLE New'[](#l2.59)
self.assertEqual(self.colorkeys('Theme'), 'IDLE Dark')[](#l2.60)
# Erroneous non-default new builtin reverts to default.[](#l2.61)
usermain['Theme']['name2'] = 'non-existent'[](#l2.62)
self.assertEqual(self.colorkeys('Theme'), self.default_theme)[](#l2.63) usermain.remove_section('Theme')[](#l2.64)
- def test_user_override_theme(self):
# Erroneous custom name (no definition) reverts to default.[](#l2.69) usermain.read_string('''[](#l2.70) [Theme][](#l2.71)
default= 0[](#l2.72)
name= Custom Dark[](#l2.73)
''') # error until set userhigh[](#l2.74)
self.assertEqual(self.colorkeys('Theme'), 'IDLE Classic')[](#l2.75)
default = False[](#l2.76)
name = Custom Dark[](#l2.77)
''')[](#l2.78)
self.assertEqual(self.colorkeys('Theme'), self.default_theme)[](#l2.79)
# Custom name is valid with matching Section name.[](#l2.80) userhigh.read_string('[Custom Dark]\na=b')[](#l2.81) self.assertEqual(self.colorkeys('Theme'), 'Custom Dark')[](#l2.82)
usermain['Theme']['name2'] = 'IDLE Dark'[](#l2.83)
# Name2 is ignored.[](#l2.84)
usermain['Theme']['name2'] = 'non-existent'[](#l2.85) self.assertEqual(self.colorkeys('Theme'), 'Custom Dark')[](#l2.86) usermain.remove_section('Theme')[](#l2.87) userhigh.remove_section('Custom Dark')[](#l2.88)
- def test_old_builtin_keys(self):
# On initial installation, user main is blank.[](#l2.91)
self.assertEqual(self.colorkeys('Keys'), self.default_keys)[](#l2.92)
# For old default, name2 must be blank, name is always used.[](#l2.93)
usermain.read_string('''[](#l2.94)
[Keys][](#l2.95)
default = True[](#l2.96)
name = IDLE Classic Unix[](#l2.97)
''')[](#l2.98)
self.assertEqual(self.colorkeys('Keys'), 'IDLE Classic Unix')[](#l2.99)
# Erroneous non-default old builtin reverts to default.[](#l2.100)
usermain['Keys']['name'] = 'non-existent'[](#l2.101)
self.assertEqual(self.colorkeys('Keys'), self.default_keys)[](#l2.102)
usermain.remove_section('Keys')[](#l2.103)
- def test_new_builtin_keys(self):
# IDLE writes name2 for new builtins.[](#l2.106)
usermain.read_string('''[](#l2.107)
[Keys][](#l2.108)
default = True[](#l2.109)
name2 = IDLE Modern Unix[](#l2.110)
''')[](#l2.111)
self.assertEqual(self.colorkeys('Keys'), 'IDLE Modern Unix')[](#l2.112)
# Leftover 'name', not removed, is ignored.[](#l2.113)
usermain['Keys']['name'] = 'IDLE Classic Unix'[](#l2.114)
self.assertEqual(self.colorkeys('Keys'), 'IDLE Modern Unix')[](#l2.115)
# Erroneous non-default new builtin reverts to default.[](#l2.116)
usermain['Keys']['name2'] = 'non-existent'[](#l2.117)
self.assertEqual(self.colorkeys('Keys'), self.default_keys)[](#l2.118)
usermain.remove_section('Keys')[](#l2.119)
- def test_user_override_keys(self):
# Erroneous custom name (no definition) reverts to default.[](#l2.122)
usermain.read_string('''[](#l2.123)
[Keys][](#l2.124)
default = False[](#l2.125)
name = Custom Keys[](#l2.126)
''')[](#l2.127)
self.assertEqual(self.colorkeys('Keys'), self.default_keys)[](#l2.128)
# Custom name is valid with matching Section name.[](#l2.129)
userkeys.read_string('[Custom Keys]\na=b')[](#l2.130)
self.assertEqual(self.colorkeys('Keys'), 'Custom Keys')[](#l2.131)
# Name2 is ignored.[](#l2.132)
usermain['Keys']['name2'] = 'non-existent'[](#l2.133)
self.assertEqual(self.colorkeys('Keys'), 'Custom Keys')[](#l2.134)
usermain.remove_section('Keys')[](#l2.135)
userkeys.remove_section('Custom Keys')[](#l2.136)