Closes #11324: ConfigParser(interpolation=None) doesn't work.

Initial patches by Tobias Brink. Thanks!
This commit is contained in:
Łukasz Langa 2011-04-28 17:03:45 +02:00
parent f531113397
commit 1aa422fe8f
3 changed files with 44 additions and 4 deletions

View File

@ -623,11 +623,12 @@ class RawConfigParser(MutableMapping):
self._strict = strict self._strict = strict
self._allow_no_value = allow_no_value self._allow_no_value = allow_no_value
self._empty_lines_in_values = empty_lines_in_values self._empty_lines_in_values = empty_lines_in_values
if interpolation is _UNSET:
self._interpolation = self._DEFAULT_INTERPOLATION
else:
self._interpolation = interpolation
self.default_section=default_section self.default_section=default_section
self._interpolation = interpolation
if self._interpolation is _UNSET:
self._interpolation = self._DEFAULT_INTERPOLATION
if self._interpolation is None:
self._interpolation = Interpolation()
def defaults(self): def defaults(self):
return self._defaults return self._defaults

View File

@ -864,6 +864,43 @@ class ConfigParserTestCase(BasicTestCase):
cf = self.newconfig() cf = self.newconfig()
self.assertRaises(ValueError, cf.add_section, self.default_section) self.assertRaises(ValueError, cf.add_section, self.default_section)
class ConfigParserTestCaseNoInterpolation(BasicTestCase):
config_class = configparser.ConfigParser
interpolation = None
ini = textwrap.dedent("""
[numbers]
one = 1
two = %(one)s * 2
three = ${common:one} * 3
[hexen]
sixteen = ${numbers:two} * 8
""").strip()
def assertMatchesIni(self, cf):
self.assertEqual(cf['numbers']['one'], '1')
self.assertEqual(cf['numbers']['two'], '%(one)s * 2')
self.assertEqual(cf['numbers']['three'], '${common:one} * 3')
self.assertEqual(cf['hexen']['sixteen'], '${numbers:two} * 8')
def test_no_interpolation(self):
cf = self.fromstring(self.ini)
self.assertMatchesIni(cf)
def test_empty_case(self):
cf = self.newconfig()
self.assertIsNone(cf.read_string(""))
def test_none_as_default_interpolation(self):
class CustomConfigParser(configparser.ConfigParser):
_DEFAULT_INTERPOLATION = None
cf = CustomConfigParser()
cf.read_string(self.ini)
self.assertMatchesIni(cf)
class ConfigParserTestCaseLegacyInterpolation(ConfigParserTestCase): class ConfigParserTestCaseLegacyInterpolation(ConfigParserTestCase):
config_class = configparser.ConfigParser config_class = configparser.ConfigParser
interpolation = configparser.LegacyInterpolation() interpolation = configparser.LegacyInterpolation()
@ -1444,6 +1481,7 @@ def test_main():
ConfigParserTestCaseNoValue, ConfigParserTestCaseNoValue,
ConfigParserTestCaseExtendedInterpolation, ConfigParserTestCaseExtendedInterpolation,
ConfigParserTestCaseLegacyInterpolation, ConfigParserTestCaseLegacyInterpolation,
ConfigParserTestCaseNoInterpolation,
ConfigParserTestCaseTrickyFile, ConfigParserTestCaseTrickyFile,
MultilineValuesTestCase, MultilineValuesTestCase,
RawConfigParserTestCase, RawConfigParserTestCase,

View File

@ -113,6 +113,7 @@ Terrence Brannon
Brian Brazil Brian Brazil
Dave Brennan Dave Brennan
Tom Bridgman Tom Bridgman
Tobias Brink
Richard Brodie Richard Brodie
Michael Broghton Michael Broghton
Daniel Brotsky Daniel Brotsky