diff options
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) |
commit | 2cf9ddb390564046242d7b0c5667c62843e74714 (patch) | |
tree | da6760e3fc78c4c8ffd0ca914c173359e8793c5d /Lib/test/test_cfgparser.py | |
parent | d2a9b20efaa15b0152856a545b0206af21d06c5e (diff) | |
download | cpython-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.py | 23 |
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() |