summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_cfgparser.py
diff options
context:
space:
mode:
authorŁukasz Langa <lukasz@langa.pl>2010-12-04 12:46:01 (GMT)
committerŁukasz Langa <lukasz@langa.pl>2010-12-04 12:46:01 (GMT)
commit2cf9ddb390564046242d7b0c5667c62843e74714 (patch)
treeda6760e3fc78c4c8ffd0ca914c173359e8793c5d /Lib/test/test_cfgparser.py
parentd2a9b20efaa15b0152856a545b0206af21d06c5e (diff)
downloadcpython-2cf9ddb390564046242d7b0c5667c62843e74714.zip
cpython-2cf9ddb390564046242d7b0c5667c62843e74714.tar.gz
cpython-2cf9ddb390564046242d7b0c5667c62843e74714.tar.bz2
configparser: fixed inconsistency where in SafeConfigParser option values
were ensured to be strings but section names and option keys were not. Behaviour unchanged for RawConfigParser and ConfigParser.
Diffstat (limited to 'Lib/test/test_cfgparser.py')
-rw-r--r--Lib/test/test_cfgparser.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index 1ae720e..24158ad 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -106,6 +106,7 @@ class BasicTestCase(CfgParserTestCaseClass):
self.assertAlmostEqual(cf.getfloat('Types', 'float'), 0.44)
eq(cf.get('Types', 'float'), "0.44")
eq(cf.getboolean('Types', 'boolean'), False)
+ eq(cf.get('Types', '123'), 'strange but acceptable')
if self.allow_no_value:
eq(cf.get('NoValue', 'option-without-value'), None)
@@ -214,6 +215,7 @@ another with spaces {0[0]} splat!
int {0[1]} 42
float {0[0]} 0.44
boolean {0[0]} NO
+123 {0[1]} strange but acceptable
""".format(self.delimiters, self.comment_prefixes)
if self.allow_no_value:
config_string += (
@@ -286,6 +288,7 @@ boolean {0[0]} NO
"int": 42,
"float": 0.44,
"boolean": False,
+ 123: "strange but acceptable",
},
}
if self.allow_no_value:
@@ -716,6 +719,15 @@ class ConfigParserTestCase(BasicTestCase):
raw=True), '%(list)s')
self.assertRaises(ValueError, cf.get, 'non-string',
'string_with_interpolation', raw=False)
+ cf.add_section(123)
+ cf.set(123, 'this is sick', True)
+ self.assertEqual(cf.get(123, 'this is sick', raw=True), True)
+ with self.assertRaises(TypeError):
+ cf.get(123, 'this is sick')
+ cf.optionxform = lambda x: x
+ cf.set('non-string', 1, 1)
+ self.assertRaises(TypeError, cf.get, 'non-string', 1, 1)
+ self.assertEqual(cf.get('non-string', 1, raw=True), 1)
class ConfigParserTestCaseNonStandardDelimiters(ConfigParserTestCase):
delimiters = (':=', '$')
@@ -783,6 +795,15 @@ class RawConfigParserTestCase(BasicTestCase):
self.assertEqual(cf.get('non-string', 'list'),
[0, 1, 1, 2, 3, 5, 8, 13])
self.assertEqual(cf.get('non-string', 'dict'), {'pi': 3.14159})
+ cf.add_section(123)
+ cf.set(123, 'this is sick', True)
+ self.assertEqual(cf.get(123, 'this is sick'), True)
+ if cf._dict.__class__ is configparser._default_dict:
+ # would not work for SortedDict; only checking for the most common
+ # default dictionary (OrderedDict)
+ cf.optionxform = lambda x: x
+ cf.set('non-string', 1, 1)
+ self.assertEqual(cf.get('non-string', 1), 1)
class RawConfigParserTestCaseNonStandardDelimiters(RawConfigParserTestCase):
delimiters = (':=', '$')
@@ -848,6 +869,8 @@ class SafeConfigParserTestCase(ConfigParserTestCase):
self.assertRaises(TypeError, cf.set, "sect", "option2", 1)
self.assertRaises(TypeError, cf.set, "sect", "option2", 1.0)
self.assertRaises(TypeError, cf.set, "sect", "option2", object())
+ self.assertRaises(TypeError, cf.set, "sect", 123, "invalid opt name!")
+ self.assertRaises(TypeError, cf.add_section, 123)
def test_add_section_default(self):
cf = self.newconfig()