From 0955faca3037311fe73df43516355a3a76123849 Mon Sep 17 00:00:00 2001 From: Mike Dirolf Date: Fri, 23 Jan 2009 10:05:59 -0500 Subject: [PATCH] better error messages for iterating on connection, database --- pymongo/connection.py | 6 ++++++ pymongo/database.py | 6 ++++++ test/test_connection.py | 8 ++++++++ test/test_database.py | 8 ++++++++ 4 files changed, 28 insertions(+) diff --git a/pymongo/connection.py b/pymongo/connection.py index 5409c17f0..c7516e90e 100644 --- a/pymongo/connection.py +++ b/pymongo/connection.py @@ -228,3 +228,9 @@ class Connection(object): result = self[name]._command({"dropDatabase": 1}) if result["ok"] != 1: raise OperationFailure("failed to drop database") + + def __iter__(self): + return self + + def next(self): + raise TypeError("'Connection' object is not iterable") diff --git a/pymongo/database.py b/pymongo/database.py index 879449c49..4905c34b4 100644 --- a/pymongo/database.py +++ b/pymongo/database.py @@ -237,3 +237,9 @@ class Database(object): """Returns a list containing current profiling information. """ return list(self.system.profile.find()) + + def __iter__(self): + return self + + def next(self): + raise TypeError("'Database' object is not iterable") diff --git a/test/test_connection.py b/test/test_connection.py index f11adaf76..f29dd82cd 100644 --- a/test/test_connection.py +++ b/test/test_connection.py @@ -101,5 +101,13 @@ class TestConnection(unittest.TestCase): dbs = connection.database_names() self.assertTrue("test" not in dbs) + def test_iteration(self): + connection = Connection(self.host, self.port) + + def iterate(): + [a for a in connection] + + self.assertRaises(TypeError, iterate) + if __name__ == "__main__": unittest.main() diff --git a/test/test_database.py b/test/test_database.py index 1cb837aca..67d3a6769 100644 --- a/test/test_database.py +++ b/test/test_database.py @@ -155,6 +155,14 @@ class TestDatabase(unittest.TestCase): self.assertTrue(isinstance(info[0]["ts"], datetime.datetime)) self.assertTrue(isinstance(info[0]["millis"], types.FloatType)) + def test_iteration(self): + db = self.connection.test + + def iterate(): + [a for a in db] + + self.assertRaises(TypeError, iterate) + def test_save_find_one(self): db = Database(self.connection, "test") db.test.remove({})