diff options
author | Łukasz Langa <lukasz@langa.pl> | 2011-04-27 16:11:50 (GMT) |
---|---|---|
committer | Łukasz Langa <lukasz@langa.pl> | 2011-04-27 16:11:50 (GMT) |
commit | 29050d7317f8ea312bcfb9967a307428ce28fc84 (patch) | |
tree | 37ad8501754ff8646cc08ca2e964bbc181cb9e41 /Lib/test/test_configparser.py | |
parent | 0abb8b74d911607d8535bd79a042918295627454 (diff) | |
parent | daab1c80928108a3b2ddf19c0245fe15af1b1fd3 (diff) | |
download | cpython-29050d7317f8ea312bcfb9967a307428ce28fc84.zip cpython-29050d7317f8ea312bcfb9967a307428ce28fc84.tar.gz cpython-29050d7317f8ea312bcfb9967a307428ce28fc84.tar.bz2 |
Merged #11670 from 3.2
Diffstat (limited to 'Lib/test/test_configparser.py')
-rw-r--r-- | Lib/test/test_configparser.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Lib/test/test_configparser.py b/Lib/test/test_configparser.py index f7d9a26..a29da93 100644 --- a/Lib/test/test_configparser.py +++ b/Lib/test/test_configparser.py @@ -1235,6 +1235,59 @@ class CopyTestCase(BasicTestCase): del section[default] return cf_copy + +class FakeFile: + def __init__(self): + file_path = support.findfile("cfgparser.1") + with open(file_path) as f: + self.lines = f.readlines() + self.lines.reverse() + + def readline(self): + if len(self.lines): + return self.lines.pop() + return '' + + +def readline_generator(f): + """As advised in Doc/library/configparser.rst.""" + line = f.readline() + while line != '': + yield line + line = f.readline() + + +class ReadFileTestCase(unittest.TestCase): + def test_file(self): + file_path = support.findfile("cfgparser.1") + parser = configparser.ConfigParser() + with open(file_path) as f: + parser.read_file(f) + self.assertTrue("Foo Bar" in parser) + self.assertTrue("foo" in parser["Foo Bar"]) + self.assertEqual(parser["Foo Bar"]["foo"], "newbar") + + def test_iterable(self): + lines = textwrap.dedent(""" + [Foo Bar] + foo=newbar""").strip().split('\n') + parser = configparser.ConfigParser() + parser.read_file(lines) + self.assertTrue("Foo Bar" in parser) + self.assertTrue("foo" in parser["Foo Bar"]) + self.assertEqual(parser["Foo Bar"]["foo"], "newbar") + + def test_readline_generator(self): + """Issue #11670.""" + parser = configparser.ConfigParser() + with self.assertRaises(TypeError): + parser.read_file(FakeFile()) + parser.read_file(readline_generator(FakeFile())) + self.assertTrue("Foo Bar" in parser) + self.assertTrue("foo" in parser["Foo Bar"]) + self.assertEqual(parser["Foo Bar"]["foo"], "newbar") + + class CoverageOneHundredTestCase(unittest.TestCase): """Covers edge cases in the codebase.""" @@ -1338,5 +1391,6 @@ def test_main(): CompatibleTestCase, CopyTestCase, ConfigParserTestCaseNonStandardDefaultSection, + ReadFileTestCase, CoverageOneHundredTestCase, ) |