diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py index 94179dacc62..cabbbdcf4f0 100644 --- a/Lib/ConfigParser.py +++ b/Lib/ConfigParser.py @@ -330,6 +330,7 @@ class ConfigParser: elif not self.has_section(section): return 0 else: + option = self.optionxform(option) return self.__sections[section].has_key(option) def set(self, section, option, value): @@ -341,6 +342,7 @@ class ConfigParser: sectdict = self.__sections[section] except KeyError: raise NoSectionError(section) + option = self.optionxform(option) sectdict[option] = value def write(self, fp): @@ -368,6 +370,7 @@ class ConfigParser: sectdict = self.__sections[section] except KeyError: raise NoSectionError(section) + option = self.optionxform(option) existed = sectdict.has_key(option) if existed: del sectdict[option] diff --git a/Lib/test/output/test_cfgparser b/Lib/test/output/test_cfgparser index eb165366900..61dcedfbf9e 100644 --- a/Lib/test/output/test_cfgparser +++ b/Lib/test/output/test_cfgparser @@ -1,5 +1,6 @@ test_cfgparser Testing basic accessors... +Testing case sensitivity... Testing value interpolation... Testing parse errors... Testing query interface... diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index e9d4ee5edc0..62395a0c2fb 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -48,6 +48,29 @@ def basic(src): " that never existed") +def case_sensitivity(): + print "Testing case sensitivity..." + cf = ConfigParser.ConfigParser() + cf.add_section("A") + cf.add_section("a") + L = cf.sections() + L.sort() + verify(L == ["A", "a"]) + cf.set("a", "B", "value") + verify(cf.options("a") == ["b"]) + verify(cf.get("a", "b", raw=1) == "value", + "could not locate option, expecting case-insensitive option names") + verify(cf.has_option("a", "b")) + cf.set("A", "A-B", "A-B value") + for opt in ("a-b", "A-b", "a-B", "A-B"): + verify(cf.has_option("A", opt), + "has_option() returned false for option which should exist") + verify(cf.options("A") == ["a-b"]) + verify(cf.options("a") == ["b"]) + cf.remove_option("a", "B") + verify(cf.options("a") == []) + + def interpolation(src): print "Testing value interpolation..." cf = ConfigParser.ConfigParser({"getname": "%(__name__)s"}) @@ -149,6 +172,7 @@ foo=Default foo[en]=English foo[de]=Deutsch """) +case_sensitivity() interpolation(r""" [Foo] bar=something %(with1)s interpolation (1 step)