From abc086fb0df915b702f14fa3d44e79e0a8b8f11f Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Tue, 18 May 2004 03:29:52 +0000 Subject: ConfigParser: - don't allow setting options to non-string values; raise TypeError when the value is set, instead of raising an arbitrary exception later (such as when string interpolation is performed) - add tests, documentation (closes SF bug #810843) --- Lib/test/test_cfgparser.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'Lib/test/test_cfgparser.py') diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index 28063b5589..b40cedf4ab 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -211,6 +211,37 @@ class TestCaseBase(unittest.TestCase): "\n" ) + def test_set_string_types(self): + cf = self.fromstring("[sect]\n" + "option1=foo\n") + # Check that we don't get an exception when setting values in + # an existing section using strings: + class mystr(str): + pass + cf.set("sect", "option1", "splat") + cf.set("sect", "option1", mystr("splat")) + cf.set("sect", "option2", "splat") + cf.set("sect", "option2", mystr("splat")) + try: + unicode + except NameError: + pass + else: + cf.set("sect", "option1", unicode("splat")) + cf.set("sect", "option2", unicode("splat")) + + def test_set_nonstring_types(self): + cf = self.fromstring("[sect]\n" + "option1=foo\n") + # Check that we get a TypeError when setting non-string values + # in an existing section: + self.assertRaises(TypeError, cf.set, "sect", "option1", 1) + self.assertRaises(TypeError, cf.set, "sect", "option1", 1.0) + self.assertRaises(TypeError, cf.set, "sect", "option1", object()) + 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()) + # shared by subclasses def get_interpolation_config(self): return self.fromstring( -- cgit v1.2.1