From beb6713ea700d28ea88c703f24c1ba6ba43230f8 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Fri, 6 Jul 2001 17:22:48 +0000 Subject: When reading a continuation line, make sure we still use the transformed name when filling in the internal data structures, otherwise we incorrectly raise a KeyError. This fixes SF bug #432369. --- Lib/ConfigParser.py | 3 ++- Lib/test/test_cfgparser.py | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py index cabbbdc..5eae972 100644 --- a/Lib/ConfigParser.py +++ b/Lib/ConfigParser.py @@ -431,7 +431,8 @@ class ConfigParser: if line[0] in ' \t' and cursect is not None and optname: value = line.strip() if value: - cursect[optname] = cursect[optname] + '\n ' + value + k = self.optionxform(optname) + cursect[k] = "%s\n%s" % (cursect[k], value) # a section header or option header? else: # is it a section header? diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index 62395a0..0d8f199 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -70,6 +70,13 @@ def case_sensitivity(): cf.remove_option("a", "B") verify(cf.options("a") == []) + # SF bug #432369: + cf = ConfigParser.ConfigParser() + sio = StringIO.StringIO("[MySection]\nOption: first line\n\tsecond line\n") + cf.readfp(sio) + verify(cf.options("MySection") == ["option"]) + verify(cf.get("MySection", "Option") == "first line\nsecond line") + def interpolation(src): print "Testing value interpolation..." -- cgit v0.12