def test_cancellerMultipleCancel(self):
"""
Verify that calling cancel multiple times on a deferred with a
canceller that does not errback results in a
L{defer.CancelledError} and that subsequent calls to cancel do not
cause an error and that after all that, the canceller was only
called once.
"""
def cancel(d):
self.cancellerCallCount += 1
d = defer.Deferred(canceller=cancel)
d.addCallbacks(self._callback, self._errback)
d.cancel()
self.assertEqual(self.errbackResults.type, defer.CancelledError)
currentFailure = self.errbackResults
d.cancel()
self.assertIs(currentFailure, self.errbackResults)
self.assertEqual(self.cancellerCallCount, 1)
评论列表
文章目录