From 3df6a3f1fbb589110c3ef3f344758bb11d3dc3df Mon Sep 17 00:00:00 2001 From: Federico Caselli Date: Mon, 29 Mar 2021 21:58:38 +0200 Subject: Repair exception handling in CursorResult Fixes: #6138 Change-Id: I794a3da688fd8577fb06770ef02bf827a5c55397 --- test/sql/test_resultset.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'test/sql') diff --git a/test/sql/test_resultset.py b/test/sql/test_resultset.py index 5439d63b5..67bd7785b 100644 --- a/test/sql/test_resultset.py +++ b/test/sql/test_resultset.py @@ -43,6 +43,7 @@ from sqlalchemy.testing import assert_raises_message from sqlalchemy.testing import assertions from sqlalchemy.testing import engines from sqlalchemy.testing import eq_ +from sqlalchemy.testing import expect_raises_message from sqlalchemy.testing import fixtures from sqlalchemy.testing import in_ from sqlalchemy.testing import is_ @@ -1476,6 +1477,36 @@ class CursorResultTest(fixtures.TablesTest): finally: r.close() + @testing.requires.dbapi_lastrowid + def test_lastrowid(self, connection): + users = self.tables.users + + r = connection.execute( + users.insert(), dict(user_id=1, user_name="Test") + ) + eq_(r.lastrowid, r.context.get_lastrowid()) + + def test_raise_errors(self, connection): + users = self.tables.users + + class Wrapper: + def __init__(self, context): + self.context = context + + def __getattr__(self, name): + if name in ("rowcount", "get_lastrowid"): + raise Exception("canary") + return getattr(self.context, name) + + r = connection.execute( + users.insert(), dict(user_id=1, user_name="Test") + ) + r.context = Wrapper(r.context) + with expect_raises_message(Exception, "canary"): + r.rowcount + with expect_raises_message(Exception, "canary"): + r.lastrowid + class KeyTargetingTest(fixtures.TablesTest): run_inserts = "once" -- cgit v1.2.1