From 3c823aa4b64653043ac8cdcb858b4042087862b0 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Mon, 26 Feb 2001 21:55:34 +0000 Subject: Make sure ConfigParser uses .optionxform() consistently; this affects .has_option(), .remove_option(), and .set(). This closes SF tracker #232913. --- Lib/ConfigParser.py | 3 +++ Lib/test/output/test_cfgparser | 1 + Lib/test/test_cfgparser.py | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py index 94179da..cabbbdc 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 eb16536..61dcedf 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 e9d4ee5..62395a0 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) -- cgit v0.12