From 0d4f6acde1e0cb82859514020e27f1468ecc8d70 Mon Sep 17 00:00:00 2001 From: Mike Dirolf Date: Mon, 26 Jan 2009 17:13:47 -0500 Subject: [PATCH] reads on non-matching file specifiers raise IOError --- gridfs/grid_file.py | 2 ++ test/test_grid_file.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/gridfs/grid_file.py b/gridfs/grid_file.py index ebd04b987..08bedf02c 100644 --- a/gridfs/grid_file.py +++ b/gridfs/grid_file.py @@ -79,6 +79,8 @@ class GridFile(object): if file: self.__id = file["_id"] else: + if mode == "r": + raise IOError("No such file: %r" % file_spec) file_spec["length"] = 0 file_spec["uploadDate"] = datetime.datetime.now() file_spec.setdefault("chunkSize", 256000) diff --git a/test/test_grid_file.py b/test/test_grid_file.py index e70b7cbb7..9cc55080b 100644 --- a/test/test_grid_file.py +++ b/test/test_grid_file.py @@ -58,6 +58,13 @@ class TestGridFile(unittest.TestCase): file.close() def test_create_grid_file(self): + self.db._files.remove({}) + self.db._chunks.remove({}) + + # just write a blank file so that reads on {} don't fail + file = GridFile({"filename": "test"}, self.db, "w") + file.close() + self.assertRaises(TypeError, GridFile, "hello", self.db) self.assertRaises(TypeError, GridFile, None, self.db) self.assertRaises(TypeError, GridFile, 5, self.db) @@ -81,5 +88,8 @@ class TestGridFile(unittest.TestCase): self.assertRaises(TypeError, GridFile, {}, self.db, "r", 5) self.assertRaises(TypeError, GridFile, {}, self.db, "r", []) + self.assertRaises(IOError, GridFile, {"filename": "mike"}, self.db) + self.assertTrue(GridFile({"filename": "test"}, self.db)) + if __name__ == "__main__": unittest.main()