summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/configparser.py7
-rw-r--r--Lib/test/test_cfgparser.py17
2 files changed, 19 insertions, 5 deletions
diff --git a/Lib/configparser.py b/Lib/configparser.py
index 7f1514f..03d6713 100644
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -493,11 +493,10 @@ class RawConfigParser:
read_ok = []
for filename in filenames:
try:
- fp = open(filename, encoding=encoding)
+ with open(filename, encoding=encoding) as fp:
+ self._read(fp, filename)
except IOError:
continue
- self._read(fp, filename)
- fp.close()
read_ok.append(filename)
return read_ok
@@ -511,7 +510,7 @@ class RawConfigParser:
"""
if source is None:
try:
- srouce = f.name
+ source = f.name
except AttributeError:
source = '<???>'
self._read(f, source)
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index 3079cfb..ad9b62a 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -328,9 +328,24 @@ boolean {0[0]} NO
e = self.parse_error(cf, configparser.ParsingError,
"[Foo]\n wrong-indent\n")
self.assertEqual(e.args, ('<???>',))
+ # read_file on a real file
+ tricky = support.findfile("cfgparser.3")
+ if self.delimiters[0] == '=':
+ error = configparser.ParsingError
+ expected = (tricky,)
+ else:
+ error = configparser.MissingSectionHeaderError
+ expected = (tricky, 1,
+ ' # INI with as many tricky parts as possible\n')
+ with open(tricky) as f:
+ e = self.parse_error(cf, error, f)
+ self.assertEqual(e.args, expected)
def parse_error(self, cf, exc, src):
- sio = io.StringIO(src)
+ if hasattr(src, 'readline'):
+ sio = src
+ else:
+ sio = io.StringIO(src)
with self.assertRaises(exc) as cm:
cf.read_file(sio)
return cm.exception