diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/configparser.py | 7 | ||||
-rw-r--r-- | Lib/test/test_cfgparser.py | 17 |
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 |