From c7eb0d984852c9350080c2b31c45ff5f1382a3d0 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 7 Dec 2016 12:27:12 -0500 Subject: [PATCH] Reset 'tpc_phase' to zero during 'tpc_abort'/'tpc_finish'. Closes #31. --- repoze/sendmail/delivery.py | 1 + repoze/sendmail/tests/test_delivery.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/repoze/sendmail/delivery.py b/repoze/sendmail/delivery.py index 59115d7..28b7cf4 100644 --- a/repoze/sendmail/delivery.py +++ b/repoze/sendmail/delivery.py @@ -102,6 +102,7 @@ def _finish(self, final_state): if self.transaction is None: raise ValueError("Not in a transaction") self.state = final_state + self.tpc_phase = 0 def commit(self, trans): if self.transaction is None: diff --git a/repoze/sendmail/tests/test_delivery.py b/repoze/sendmail/tests/test_delivery.py index 9776943..fe5ef6f 100644 --- a/repoze/sendmail/tests/test_delivery.py +++ b/repoze/sendmail/tests/test_delivery.py @@ -79,6 +79,7 @@ def test__finish_w_transaction(self): mdm.join_transaction(txn) mdm._finish(2) self.assertEqual(mdm.state, 2) + self.assertEqual(mdm.tpc_phase, 0) def test_commit_wo_transaction(self): mdm = self._makeOne(object) @@ -251,6 +252,7 @@ def _callable(*args): mdm.tpc_finish(txn) self.assertEqual(_called, [(1, 2)]) self.assertEqual(mdm.state, MailDataManagerState.TPC_FINISHED) + self.assertEqual(mdm.tpc_phase, 0) def test_tpc_abort_wo_transaction(self): mdm = self._makeOne() @@ -287,6 +289,7 @@ def test_tpc_abort_begun_ok(self): mdm.tpc_phase = 1 mdm.tpc_abort(txn) self.assertEqual(mdm.state, MailDataManagerState.TPC_ABORTED) + self.assertEqual(mdm.tpc_phase, 0) def test_tpc_abort_voted_ok(self): from ..delivery import MailDataManagerState @@ -296,6 +299,7 @@ def test_tpc_abort_voted_ok(self): mdm.tpc_phase = 2 mdm.tpc_abort(txn) self.assertEqual(mdm.state, MailDataManagerState.TPC_ABORTED) + self.assertEqual(mdm.tpc_phase, 0) class TestAbstractMailDelivery(unittest.TestCase):