def test_noCancellerMultipleCancelsAfterCancelAndErrback(self):
"""
A L{defer.Deferred} without a canceller, when cancelled and then
errbacked, ignores multiple cancels thereafter.
"""
d = defer.Deferred()
d.addCallbacks(self._callback, self._errback)
d.cancel()
self.assertEqual(self.errbackResults.type, defer.CancelledError)
currentFailure = self.errbackResults
# One errback will be ignored
d.errback(GenericError())
# I.e., we should still have a CancelledError.
self.assertEqual(self.errbackResults.type, defer.CancelledError)
d.cancel()
self.assertIs(currentFailure, self.errbackResults)
评论列表
文章目录