diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-04-18 12:01:16 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-04-18 12:01:16 -0400 |
commit | 1b9c1a2ecf549c54dbf0414fdf4ea197d4ba6dbd (patch) | |
tree | 553b86f678a1d4792d4985846d19c9cdf8fc198c /test/engine/test_reconnect.py | |
parent | 6d93918b9b68202fdcb1f76f865efd5cde154963 (diff) | |
download | sqlalchemy-1b9c1a2ecf549c54dbf0414fdf4ea197d4ba6dbd.tar.gz |
- test + changelog for [ticket:2691]
Diffstat (limited to 'test/engine/test_reconnect.py')
-rw-r--r-- | test/engine/test_reconnect.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/engine/test_reconnect.py b/test/engine/test_reconnect.py index 86f646f33..9aecb81a9 100644 --- a/test/engine/test_reconnect.py +++ b/test/engine/test_reconnect.py @@ -51,6 +51,7 @@ class MockCursor(object): def __init__(self, parent): self.explode = parent.explode self.description = () + self.closed = False def execute(self, *args, **kwargs): if self.explode == 'execute': raise MockDisconnect("Lost the DB connection on execute") @@ -60,10 +61,20 @@ class MockCursor(object): elif self.explode in ('rollback', 'rollback_no_disconnect'): raise MockError( "something broke on execute but we didn't lose the connection") + elif args and "select" in args[0]: + self.description = [('foo', None, None, None, None, None)] else: return + def fetchall(self): + if self.closed: + raise MockError("cursor closed") + return [] + def fetchone(self): + if self.closed: + raise MockError("cursor closed") + return None def close(self): - pass + self.closed = True db, dbapi = None, None class MockReconnectTest(fixtures.TestBase): @@ -294,6 +305,17 @@ class MockReconnectTest(fixtures.TestBase): conn.execute, select([1]) ) + def test_check_disconnect_no_cursor(self): + conn = db.connect() + result = conn.execute("select 1") + result.cursor.close() + conn.close() + assert_raises_message( + tsa.exc.DBAPIError, + "cursor closed", + list, result + ) + class CursorErrTest(fixtures.TestBase): def setup(self): |