summaryrefslogtreecommitdiff
path: root/Lib/test/test_configparser.py
diff options
context:
space:
mode:
authorŁukasz Langa <lukasz@langa.pl>2011-04-27 18:11:50 +0200
committerŁukasz Langa <lukasz@langa.pl>2011-04-27 18:11:50 +0200
commit29050d7317f8ea312bcfb9967a307428ce28fc84 (patch)
tree37ad8501754ff8646cc08ca2e964bbc181cb9e41 /Lib/test/test_configparser.py
parent0abb8b74d911607d8535bd79a042918295627454 (diff)
parentdaab1c80928108a3b2ddf19c0245fe15af1b1fd3 (diff)
downloadcpython-git-29050d7317f8ea312bcfb9967a307428ce28fc84.tar.gz
Merged #11670 from 3.2
Diffstat (limited to 'Lib/test/test_configparser.py')
-rw-r--r--Lib/test/test_configparser.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/Lib/test/test_configparser.py b/Lib/test/test_configparser.py
index f7d9a26e89..a29da9388c 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,
)