summaryrefslogtreecommitdiff
path: root/test/engine/test_transaction.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-07-12 19:34:25 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-07-12 19:34:25 -0400
commit7bb2adfff90f989d45cbcb6f306d8d9d82298816 (patch)
tree7f766981e8c908bfa1bf1a5d07b00b4a6998f53b /test/engine/test_transaction.py
parentf5023ceef3858a4ebbef8d401d10f6493e773b75 (diff)
downloadsqlalchemy-7bb2adfff90f989d45cbcb6f306d8d9d82298816.tar.gz
- Context manager provided by Connection.begin()
will issue rollback() if the commit() fails, not just if an exception occurs.
Diffstat (limited to 'test/engine/test_transaction.py')
-rw-r--r--test/engine/test_transaction.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/engine/test_transaction.py b/test/engine/test_transaction.py
index 1184befda..344a30734 100644
--- a/test/engine/test_transaction.py
+++ b/test/engine/test_transaction.py
@@ -159,6 +159,28 @@ class TransactionTest(fixtures.TestBase):
assert len(result.fetchall()) == 0
connection.close()
+ def test_with_interface(self):
+ connection = testing.db.connect()
+ trans = connection.begin()
+ connection.execute(users.insert(), user_id=1, user_name='user1')
+ connection.execute(users.insert(), user_id=2, user_name='user2')
+ try:
+ connection.execute(users.insert(), user_id=2, user_name='user2.5')
+ except Exception, e:
+ trans.__exit__(*sys.exc_info())
+
+ assert not trans.is_active
+ self.assert_(connection.scalar('select count(*) from '
+ 'query_users') == 0)
+
+ trans = connection.begin()
+ connection.execute(users.insert(), user_id=1, user_name='user1')
+ trans.__exit__(None, None, None)
+ assert not trans.is_active
+ self.assert_(connection.scalar('select count(*) from '
+ 'query_users') == 1)
+ connection.close()
+
def test_close(self):
connection = testing.db.connect()
transaction = connection.begin()