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()