diff Lib/sqlite3/test/dbapi.py @ 62009:62ca540d8b6e

#8845: expose sqlite3 inTransaction as RO in_transaction Connection attribute. Patch by R. David Murray, unit tests by Shashwat Anand.
author R. David Murray <rdmurray@bitdance.com>
date Tue, 01 Jun 2010 01:32:12 +0000
parents 493bb4585e38
children 9fe76c26ea9f
line wrap: on
line diff
--- a/Lib/sqlite3/test/dbapi.py	Tue Jun 01 01:11:18 2010 +0000
+++ b/Lib/sqlite3/test/dbapi.py	Tue Jun 01 01:32:12 2010 +0000
@@ -84,6 +84,7 @@
                         "NotSupportedError is not a subclass of DatabaseError")
 
 class ConnectionTests(unittest.TestCase):
+
     def setUp(self):
         self.cx = sqlite.connect(":memory:")
         cu = self.cx.cursor()
@@ -140,6 +141,28 @@
         self.assertEqual(self.cx.ProgrammingError, sqlite.ProgrammingError)
         self.assertEqual(self.cx.NotSupportedError, sqlite.NotSupportedError)
 
+    def CheckInTransaction(self):
+        # Can't use db from setUp because we want to test initial state.
+        cx = sqlite.connect(":memory:")
+        cu = cx.cursor()
+        self.assertEqual(cx.in_transaction, False)
+        cu.execute("create table transactiontest(id integer primary key, name text)")
+        self.assertEqual(cx.in_transaction, False)
+        cu.execute("insert into transactiontest(name) values (?)", ("foo",))
+        self.assertEqual(cx.in_transaction, True)
+        cu.execute("select name from transactiontest where name=?", ["foo"])
+        row = cu.fetchone()
+        self.assertEqual(cx.in_transaction, True)
+        cx.commit()
+        self.assertEqual(cx.in_transaction, False)
+        cu.execute("select name from transactiontest where name=?", ["foo"])
+        row = cu.fetchone()
+        self.assertEqual(cx.in_transaction, False)
+
+    def CheckInTransactionRO(self):
+        with self.assertRaises(AttributeError):
+            self.cx.in_transaction = True
+
 class CursorTests(unittest.TestCase):
     def setUp(self):
         self.cx = sqlite.connect(":memory:")