Commit a1e627d6 authored by Fred Drake's avatar Fred Drake

fix output from RawConfigParser.write and ConfigParser.write for None

values (http://bugs.python.org/issue7005)
parent 5cd2d8c7
...@@ -400,7 +400,7 @@ class RawConfigParser: ...@@ -400,7 +400,7 @@ class RawConfigParser:
for (key, value) in self._sections[section].items(): for (key, value) in self._sections[section].items():
if key == "__name__": if key == "__name__":
continue continue
if value is not None: if (value is not None) or (self._optcre == self.OPTCRE):
key = " = ".join((key, str(value).replace('\n', '\n\t'))) key = " = ".join((key, str(value).replace('\n', '\n\t')))
fp.write("%s\n" % (key)) fp.write("%s\n" % (key))
fp.write("\n") fp.write("\n")
......
...@@ -530,6 +530,33 @@ class SafeConfigParserTestCaseNoValue(SafeConfigParserTestCase): ...@@ -530,6 +530,33 @@ class SafeConfigParserTestCaseNoValue(SafeConfigParserTestCase):
allow_no_value = True allow_no_value = True
class Issue7005TestCase(unittest.TestCase):
"""Test output when None is set() as a value and allow_no_value == False.
http://bugs.python.org/issue7005
"""
expected_output = "[section]\noption = None\n\n"
def prepare(self, config_class):
# This is the default, but that's the point.
cp = config_class(allow_no_value=False)
cp.add_section("section")
cp.set("section", "option", None)
sio = StringIO.StringIO()
cp.write(sio)
return sio.getvalue()
def test_none_as_value_stringified(self):
output = self.prepare(ConfigParser.ConfigParser)
self.assertEqual(output, self.expected_output)
def test_none_as_value_stringified_raw(self):
output = self.prepare(ConfigParser.RawConfigParser)
self.assertEqual(output, self.expected_output)
class SortedTestCase(RawConfigParserTestCase): class SortedTestCase(RawConfigParserTestCase):
def newconfig(self, defaults=None): def newconfig(self, defaults=None):
self.cf = self.config_class(defaults=defaults, dict_type=SortedDict) self.cf = self.config_class(defaults=defaults, dict_type=SortedDict)
...@@ -563,6 +590,7 @@ def test_main(): ...@@ -563,6 +590,7 @@ def test_main():
SafeConfigParserTestCase, SafeConfigParserTestCase,
SafeConfigParserTestCaseNoValue, SafeConfigParserTestCaseNoValue,
SortedTestCase, SortedTestCase,
Issue7005TestCase,
) )
......
...@@ -36,6 +36,9 @@ Core and Builtins ...@@ -36,6 +36,9 @@ Core and Builtins
Library Library
------- -------
- Issue #7005: Fixed output of None values for RawConfigParser.write and
ConfigParser.write.
- Issue #808164: Fixed socket.close to avoid references to globals, to - Issue #808164: Fixed socket.close to avoid references to globals, to
avoid issues when socket.close is called from a __del__ method. avoid issues when socket.close is called from a __del__ method.
......
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