]> granicus.if.org Git - python/commitdiff
Make sure ConfigParser uses .optionxform() consistently; this affects
authorFred Drake <fdrake@acm.org>
Mon, 26 Feb 2001 21:55:34 +0000 (21:55 +0000)
committerFred Drake <fdrake@acm.org>
Mon, 26 Feb 2001 21:55:34 +0000 (21:55 +0000)
.has_option(), .remove_option(), and .set().

This closes SF tracker #232913.

Lib/ConfigParser.py
Lib/test/output/test_cfgparser
Lib/test/test_cfgparser.py

index 94179dacc62dab7fb5ce6d91462a35facf05d072..cabbbdcf4f077e353332d0e511ad5d58dc3bc3a4 100644 (file)
@@ -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]
index eb165366900f6a2153a63d6cfc547c3e6b0daf1f..61dcedfbf9e5b8da8663aff09ebf711bd25f8f8c 100644 (file)
@@ -1,5 +1,6 @@
 test_cfgparser
 Testing basic accessors...
+Testing case sensitivity...
 Testing value interpolation...
 Testing parse errors...
 Testing query interface...
index e9d4ee5edc0794493c5dfb86e17b195b04671974..62395a0c2fb943cc5ae9ad21025786aee396c60f 100644 (file)
@@ -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)