mirror of
https://github.com/python/cpython.git
synced 2025-08-19 00:00:48 +00:00
fix output from RawConfigParser.write and ConfigParser.write for None
values (http://bugs.python.org/issue7005)
This commit is contained in:
parent
5cd2d8c7ec
commit
a1e627d61c
3 changed files with 32 additions and 1 deletions
|
@ -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):
|
||||||
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():
|
||||||
SafeConfigParserTestCase,
|
SafeConfigParserTestCase,
|
||||||
SafeConfigParserTestCaseNoValue,
|
SafeConfigParserTestCaseNoValue,
|
||||||
SortedTestCase,
|
SortedTestCase,
|
||||||
|
Issue7005TestCase,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue