[Checkins] SVN: transaction/branches/sphinx/ Coverage for Savepoint.
Tres Seaver
cvs-admin at zope.org
Tue Dec 18 05:25:09 UTC 2012
Log message for revision 128753:
Coverage for Savepoint.
Changed:
_U transaction/branches/sphinx/
U transaction/branches/sphinx/transaction/tests/test__transaction.py
-=-
Modified: transaction/branches/sphinx/transaction/tests/test__transaction.py
===================================================================
--- transaction/branches/sphinx/transaction/tests/test__transaction.py 2012-12-18 05:25:08 UTC (rev 128752)
+++ transaction/branches/sphinx/transaction/tests/test__transaction.py 2012-12-18 05:25:09 UTC (rev 128753)
@@ -1196,6 +1196,79 @@
self.assertEqual(mora.sortKey(), 'hhh')
+class SavepointTests(unittest.TestCase):
+
+ def _getTargetClass(self):
+ from transaction._transaction import Savepoint
+ return Savepoint
+
+ def _makeOne(self, txn, optimistic, *resources):
+ return self._getTargetClass()(txn, optimistic, *resources)
+
+ def test_ctor_w_savepoint_oblivious_resource_non_optimistic(self):
+ txn = object()
+ resource = object()
+ self.assertRaises(TypeError, self._makeOne, txn, False, resource)
+
+ def test_ctor_w_savepoint_oblivious_resource_optimistic(self):
+ from transaction._transaction import NoRollbackSavepoint
+ txn = object()
+ resource = object()
+ sp = self._makeOne(txn, True, resource)
+ self.assertEqual(len(sp._savepoints), 1)
+ self.assertTrue(isinstance(sp._savepoints[0], NoRollbackSavepoint))
+ self.assertTrue(sp._savepoints[0].datamanager is resource)
+
+ def test_ctor_w_savepoint_aware_resources(self):
+ class _Aware(object):
+ def savepoint(self):
+ return self
+ txn = object()
+ one = _Aware()
+ another = _Aware()
+ sp = self._makeOne(txn, True, one, another)
+ self.assertEqual(len(sp._savepoints), 2)
+ self.assertTrue(isinstance(sp._savepoints[0], _Aware))
+ self.assertTrue(sp._savepoints[0] is one)
+ self.assertTrue(isinstance(sp._savepoints[1], _Aware))
+ self.assertTrue(sp._savepoints[1] is another)
+
+ def test_rollback_w_txn_None(self):
+ from transaction.interfaces import InvalidSavepointRollbackError
+ txn = None
+ class _Aware(object):
+ def savepoint(self):
+ return self
+ resource = _Aware()
+ sp = self._makeOne(txn, False, resource)
+ self.assertRaises(InvalidSavepointRollbackError, sp.rollback)
+
+ def test_rollback_w_sp_error(self):
+ class _TXN(object):
+ _sarce = False
+ _raia = None
+ def _saveAndRaiseCommitishError(self):
+ import sys
+ from transaction._compat import reraise
+ self._sarce = True
+ reraise(*sys.exc_info())
+ def _remove_and_invalidate_after(self, sp):
+ self._raia = sp
+ class _Broken(object):
+ def rollback(self):
+ raise ValueError()
+ _broken = _Broken()
+ class _GonnaRaise(object):
+ def savepoint(self):
+ return _broken
+ txn = _TXN()
+ resource = _GonnaRaise()
+ sp = self._makeOne(txn, False, resource)
+ self.assertRaises(ValueError, sp.rollback)
+ self.assertTrue(txn._raia is sp)
+ self.assertTrue(txn._sarce)
+
+
class MiscellaneousTests(unittest.TestCase):
def test_BBB_join(self):
@@ -1306,5 +1379,6 @@
unittest.makeSuite(Test_object_hint),
unittest.makeSuite(Test_oid_repr),
unittest.makeSuite(DataManagerAdapterTests),
+ unittest.makeSuite(SavepointTests),
unittest.makeSuite(MiscellaneousTests),
))
More information about the checkins
mailing list