Commit 8844441a authored by Fred Drake's avatar Fred Drake

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

values (http://bugs.python.org/issue7005)
(merged r84443 from the release27-mmaint branch, with changes to reflect
changes in Python 3)
parent af1e1403
...@@ -637,7 +637,7 @@ class RawConfigParser: ...@@ -637,7 +637,7 @@ class RawConfigParser:
for key, value in section_items: for key, value in 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):
value = delimiter + str(value).replace('\n', '\n\t') value = delimiter + str(value).replace('\n', '\n\t')
else: else:
value = "" value = ""
......
...@@ -755,6 +755,34 @@ class SafeConfigParserTestCaseTrickyFile(CfgParserTestCaseClass): ...@@ -755,6 +755,34 @@ class SafeConfigParserTestCaseTrickyFile(CfgParserTestCaseClass):
with self.assertRaises(UnicodeDecodeError): with self.assertRaises(UnicodeDecodeError):
cf.read(tricky, encoding='ascii') cf.read(tricky, encoding='ascii')
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 = io.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):
dict_type = SortedDict dict_type = SortedDict
...@@ -811,6 +839,7 @@ def test_main(): ...@@ -811,6 +839,7 @@ def test_main():
SafeConfigParserTestCaseNoValue, SafeConfigParserTestCaseNoValue,
SafeConfigParserTestCaseTrickyFile, SafeConfigParserTestCaseTrickyFile,
SortedTestCase, SortedTestCase,
Issue7005TestCase,
StrictTestCase, StrictTestCase,
CompatibleTestCase, CompatibleTestCase,
) )
......
...@@ -155,6 +155,9 @@ Extensions ...@@ -155,6 +155,9 @@ Extensions
Library Library
------- -------
- Issue #7005: Fixed output of None values for RawConfigParser.write and
ConfigParser.write.
- Issue #8990: array.fromstring() and array.tostring() get renamed to - Issue #8990: array.fromstring() and array.tostring() get renamed to
frombytes() and tobytes(), respectively, to avoid confusion. Furthermore, frombytes() and tobytes(), respectively, to avoid confusion. Furthermore,
array.frombytes(), array.extend() as well as the array.array() array.frombytes(), array.extend() as well as the array.array()
......
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