Closes #11324: ConfigParser(interpolation=None) doesn't work.
Initial patches by Tobias Brink. Thanks!
This commit is contained in:
parent
f531113397
commit
1aa422fe8f
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue