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 @@
             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
