diff -r 6dbc4d6ff31e Lib/mimetypes.py --- a/Lib/mimetypes.py Tue Aug 06 16:03:33 2013 +0200 +++ b/Lib/mimetypes.py Tue Aug 06 23:29:15 2013 +0800 @@ -358,12 +358,12 @@ def read_mime_types(file): try: - f = open(file) + with open(file) as f: + db = MimeTypes() + db.readfp(f, True) + return db.types_map[True] except OSError: return None - db = MimeTypes() - db.readfp(f, True) - return db.types_map[True] def _default_mime_types(): diff -r 6dbc4d6ff31e Lib/test/test_mimetypes.py --- a/Lib/test/test_mimetypes.py Tue Aug 06 16:03:33 2013 +0200 +++ b/Lib/test/test_mimetypes.py Tue Aug 06 23:29:15 2013 +0800 @@ -16,6 +16,9 @@ def setUp(self): self.db = mimetypes.MimeTypes() + def tearDown(self): + support.unlink(support.TESTFN) + def test_default_data(self): eq = self.assertEqual eq(self.db.guess_type("foo.html"), ("text/html", None)) @@ -40,6 +43,14 @@ ("x-application/x-unittest", None)) eq(self.db.guess_extension("x-application/x-unittest"), ".pyunit") + def test_read_mime_types(self): + with open(support.TESTFN, "w") as file: + file.write("x-application/mimea mimea\n") + file.write("application/mimeb mimeb\n") + mime_types = mimetypes.read_mime_types(support.TESTFN) + self.assertEqual(mime_types['.mimea'], 'x-application/mimea') + self.assertEqual(mime_types['.mimeb'], 'application/mimeb') + def test_non_standard_types(self): eq = self.assertEqual # First try strict