Kaydet (Commit) 68a1abda authored tarafından David Goodger's avatar David Goodger

SF bug #1017864: ConfigParser now correctly handles default keys, processing…

SF bug #1017864: ConfigParser now correctly handles default keys, processing them with ``ConfigParser.optionxform`` when supplied, consistent with the handling of config file entries and runtime-set options.
üst bfe56843
......@@ -202,10 +202,10 @@ class MissingSectionHeaderError(ParsingError):
class RawConfigParser:
def __init__(self, defaults=None):
self._sections = {}
if defaults is None:
self._defaults = {}
else:
self._defaults = defaults
self._defaults = {}
if defaults:
for key, value in defaults.items():
self._defaults[self.optionxform(key)] = value
def defaults(self):
return self._defaults
......@@ -511,8 +511,9 @@ class ConfigParser(RawConfigParser):
if section != DEFAULTSECT:
raise NoSectionError(section)
# Update with the entry specific variables
if vars is not None:
d.update(vars)
if vars:
for key, value in vars.items():
d[self.optionxform(key)] = value
option = self.optionxform(option)
try:
value = d[option]
......@@ -544,7 +545,8 @@ class ConfigParser(RawConfigParser):
raise NoSectionError(section)
# Update with the entry specific variables
if vars:
d.update(vars)
for key, value in vars.items():
d[self.optionxform(key)] = value
options = d.keys()
if "__name__" in options:
options.remove("__name__")
......
......@@ -115,6 +115,16 @@ class TestCaseBase(unittest.TestCase):
self.failUnless(cf.has_option("section", "Key"))
def test_default_case_sensitivity(self):
cf = self.newconfig({"foo": "Bar"})
self.assertEqual(
cf.get("DEFAULT", "Foo"), "Bar",
"could not locate option, expecting case-insensitive option names")
cf = self.newconfig({"Foo": "Bar"})
self.assertEqual(
cf.get("DEFAULT", "Foo"), "Bar",
"could not locate option, expecting case-insensitive defaults")
def test_parse_errors(self):
self.newconfig()
self.parse_error(ConfigParser.ParsingError,
......
......@@ -94,6 +94,11 @@ Library
- httplib now handles ipv6 address/port pairs.
- SF bug #1017864: ConfigParser now correctly handles default keys,
processing them with ``ConfigParser.optionxform`` when supplied,
consistent with the handling of config file entries and runtime-set
options.
Build
-----
......
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