diff options
author | Fred Drake <fdrake@acm.org> | 2010-09-03 04:22:36 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2010-09-03 04:22:36 (GMT) |
commit | 8844441ae68358c832e04d8b48ba7b035f67d9bf (patch) | |
tree | 464decec5e4b8669c0e76edaaac96d4f36caaaea /Lib | |
parent | af1e140334e090583651670193d1c310f29bf90e (diff) | |
download | cpython-8844441ae68358c832e04d8b48ba7b035f67d9bf.zip cpython-8844441ae68358c832e04d8b48ba7b035f67d9bf.tar.gz cpython-8844441ae68358c832e04d8b48ba7b035f67d9bf.tar.bz2 |
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)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/configparser.py | 2 | ||||
-rw-r--r-- | Lib/test/test_cfgparser.py | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/Lib/configparser.py b/Lib/configparser.py index eb29b02..fb39ac3 100644 --- a/Lib/configparser.py +++ b/Lib/configparser.py @@ -637,7 +637,7 @@ class RawConfigParser: for key, value in section_items: if key == "__name__": continue - if value is not None: + if (value is not None) or (self._optcre == self.OPTCRE): value = delimiter + str(value).replace('\n', '\n\t') else: value = "" diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index f43d1d7..a20678d 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -755,6 +755,34 @@ class SafeConfigParserTestCaseTrickyFile(CfgParserTestCaseClass): with self.assertRaises(UnicodeDecodeError): 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): dict_type = SortedDict @@ -811,6 +839,7 @@ def test_main(): SafeConfigParserTestCaseNoValue, SafeConfigParserTestCaseTrickyFile, SortedTestCase, + Issue7005TestCase, StrictTestCase, CompatibleTestCase, ) |