Commit f776eb0f authored by Louie Lu's avatar Louie Lu Committed by terryjreedy

bpo-30917: IDLE: Add config.IdleConf unittests (#2691)

Patch by Louie Lu.
parent 5feda33a
...@@ -30,6 +30,7 @@ import os ...@@ -30,6 +30,7 @@ import os
import sys import sys
from tkinter.font import Font from tkinter.font import Font
import idlelib
class InvalidConfigType(Exception): pass class InvalidConfigType(Exception): pass
class InvalidConfigSet(Exception): pass class InvalidConfigSet(Exception): pass
...@@ -159,15 +160,16 @@ class IdleConf: ...@@ -159,15 +160,16 @@ class IdleConf:
for config_type in self.config_types: for config_type in self.config_types:
(user home dir)/.idlerc/config-{config-type}.cfg (user home dir)/.idlerc/config-{config-type}.cfg
""" """
def __init__(self): def __init__(self, _utest=False):
self.config_types = ('main', 'highlight', 'keys', 'extensions') self.config_types = ('main', 'highlight', 'keys', 'extensions')
self.defaultCfg = {} self.defaultCfg = {}
self.userCfg = {} self.userCfg = {}
self.cfg = {} # TODO use to select userCfg vs defaultCfg self.cfg = {} # TODO use to select userCfg vs defaultCfg
if not _utest:
self.CreateConfigHandlers() self.CreateConfigHandlers()
self.LoadCfgFiles() self.LoadCfgFiles()
def CreateConfigHandlers(self): def CreateConfigHandlers(self):
"Populate default and user config parser dictionaries." "Populate default and user config parser dictionaries."
#build idle install path #build idle install path
...@@ -215,6 +217,7 @@ class IdleConf: ...@@ -215,6 +217,7 @@ class IdleConf:
except OSError: except OSError:
warn = ('\n Warning: unable to create user config directory\n' + warn = ('\n Warning: unable to create user config directory\n' +
userDir + '\n Check path and permissions.\n Exiting!\n') userDir + '\n Check path and permissions.\n Exiting!\n')
if not idlelib.testing:
print(warn, file=sys.stderr) print(warn, file=sys.stderr)
raise SystemExit raise SystemExit
# TODO continue without userDIr instead of exit # TODO continue without userDIr instead of exit
...@@ -463,16 +466,7 @@ class IdleConf: ...@@ -463,16 +466,7 @@ class IdleConf:
def RemoveKeyBindNames(self, extnNameList): def RemoveKeyBindNames(self, extnNameList):
"Return extnNameList with keybinding section names removed." "Return extnNameList with keybinding section names removed."
# TODO Easier to return filtered copy with list comp return [n for n in extnNameList if not n.endswith(('_bindings', '_cfgBindings'))]
names = extnNameList
kbNameIndicies = []
for name in names:
if name.endswith(('_bindings', '_cfgBindings')):
kbNameIndicies.append(names.index(name))
kbNameIndicies.sort(reverse=True)
for index in kbNameIndicies: #delete each keybinding section name
del(names[index])
return names
def GetExtnNameForEvent(self, virtualEvent): def GetExtnNameForEvent(self, virtualEvent):
"""Return the name of the extension binding virtualEvent, or None. """Return the name of the extension binding virtualEvent, or None.
......
This diff is collapsed.
Add tests for idlelib.config.IdleConf.
Increase coverage from 46% to 96%.
Patch by Louie Lu.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment