Commit 70eb79c6 authored by Łukasz Langa's avatar Łukasz Langa

Merged solution for #11324 from 3.2.

parents bf53a9c2 1aa422fe
...@@ -624,11 +624,12 @@ class RawConfigParser(MutableMapping): ...@@ -624,11 +624,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): ...@@ -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(): ...@@ -1444,6 +1481,7 @@ def test_main():
ConfigParserTestCaseNoValue, ConfigParserTestCaseNoValue,
ConfigParserTestCaseExtendedInterpolation, ConfigParserTestCaseExtendedInterpolation,
ConfigParserTestCaseLegacyInterpolation, ConfigParserTestCaseLegacyInterpolation,
ConfigParserTestCaseNoInterpolation,
ConfigParserTestCaseTrickyFile, ConfigParserTestCaseTrickyFile,
MultilineValuesTestCase, MultilineValuesTestCase,
RawConfigParserTestCase, RawConfigParserTestCase,
......
...@@ -115,6 +115,7 @@ Terrence Brannon ...@@ -115,6 +115,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
......
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