[Zodb-checkins] CVS: Packages/ZODB/tests - testZODB.py:1.15.8.4
Tim Peters
tim.one at comcast.net
Wed Aug 25 15:17:30 EDT 2004
Update of /cvs-repository/Packages/ZODB/tests
In directory cvs.zope.org:/tmp/cvs-serv23647/lib/python/ZODB/tests
Modified Files:
Tag: Zope-2_7-branch
testZODB.py
Log Message:
Transaction.begin() should imply abort().
But didn't, if the only changes pending were in subtransactions. Now it
does, + new checkTxnBeginImpliesAbort test to ensure it stays fixed.
=== Packages/ZODB/tests/testZODB.py 1.15.8.3 => 1.15.8.4 ===
--- Packages/ZODB/tests/testZODB.py:1.15.8.3 Fri May 21 12:14:05 2004
+++ Packages/ZODB/tests/testZODB.py Wed Aug 25 15:17:30 2004
@@ -329,5 +329,40 @@
self.obj = DecoyIndependent()
self.readConflict()
+ def checkTxnBeginImpliesAbort(self):
+ # begin() should do an abort() first, if needed.
+ cn = self._db.open()
+ rt = cn.root()
+ rt['a'] = 1
+
+ get_transaction().begin() # should abort adding 'a' to the root
+ rt = cn.root()
+ self.assertRaises(KeyError, rt.__getitem__, 'a')
+
+ # A longstanding bug: this didn't work if changes were only in
+ # subtransactions.
+ get_transaction().begin()
+ rt = cn.root()
+ rt['a'] = 2
+ get_transaction().commit(1)
+
+ get_transaction().begin()
+ rt = cn.root()
+ self.assertRaises(KeyError, rt.__getitem__, 'a')
+
+ # One more time, mixing "top level" and subtransaction changes.
+ get_transaction().begin()
+ rt = cn.root()
+ rt['a'] = 3
+ get_transaction().commit(1)
+ rt['b'] = 4
+
+ get_transaction().begin()
+ rt = cn.root()
+ self.assertRaises(KeyError, rt.__getitem__, 'a')
+ self.assertRaises(KeyError, rt.__getitem__, 'b')
+
+ cn.close()
+
def test_suite():
return unittest.makeSuite(ZODBTests, 'check')
More information about the Zodb-checkins
mailing list