summaryrefslogtreecommitdiff
path: root/test_retrying.py
diff options
context:
space:
mode:
authorRay Holder <ray@blacklocus.com>2013-01-22 00:29:01 -0600
committerRay Holder <ray@blacklocus.com>2013-01-22 00:29:01 -0600
commitd2bb0f06f6c06e00126cfda17b67cf6cc3d2a16c (patch)
tree62afbeb88c68c30830f716465ccf026d5a4fe26f /test_retrying.py
parentc4f99b5c0091379d48c2a10481a3c3e241b1592a (diff)
downloadretrying-d2bb0f06f6c06e00126cfda17b67cf6cc3d2a16c.tar.gz
add a few more tests for some edge cases
Diffstat (limited to 'test_retrying.py')
-rw-r--r--test_retrying.py49
1 files changed, 46 insertions, 3 deletions
diff --git a/test_retrying.py b/test_retrying.py
index f6dc3f9..4de06d7 100644
--- a/test_retrying.py
+++ b/test_retrying.py
@@ -186,10 +186,32 @@ def _retryable_test_with_stop(thing):
def _retryable_test_with_exception_type_io(thing):
return thing.go()
-@retry(stop='stop_after_attempt', stop_max_attempt_number=3,retry_on_exception=retry_if_exception_of_type(IOError))
+@retry(retry_on_exception=retry_if_exception_of_type(IOError), wrap_exception=True)
+def _retryable_test_with_exception_type_io_wrap(thing):
+ return thing.go()
+
+@retry(
+ stop='stop_after_attempt',
+ stop_max_attempt_number=3,
+ retry_on_exception=retry_if_exception_of_type(IOError))
def _retryable_test_with_exception_type_io_attempt_limit(thing):
return thing.go()
+@retry(
+ stop='stop_after_attempt',
+ stop_max_attempt_number=3,
+ retry_on_exception=retry_if_exception_of_type(IOError),
+ wrap_exception=True)
+def _retryable_test_with_exception_type_io_attempt_limit_wrap(thing):
+ return thing.go()
+
+@retry
+def _retryable_default(thing):
+ return thing.go()
+
+@retry()
+def _retryable_default_f(thing):
+ return thing.go()
class TestDecoratorWrapper(unittest.TestCase):
@@ -205,7 +227,7 @@ class TestDecoratorWrapper(unittest.TestCase):
_retryable_test_with_stop(NoneReturnUntilAfterCount(5))
self.fail("Expected RetryError after 3 attempts")
except RetryError as e:
- self.assertEqual(3, e.failed_attempts)
+ self.assertEqual(3, e.last_attempt.attempt_number)
def test_retry_if_exception_of_type(self):
self.assertTrue(_retryable_test_with_exception_type_io(NoIOErrorAfterCount(5)))
@@ -220,9 +242,30 @@ class TestDecoratorWrapper(unittest.TestCase):
_retryable_test_with_exception_type_io_attempt_limit(NoIOErrorAfterCount(5))
self.fail("RetryError expected")
except RetryError as re:
- self.assertEqual(3, re.failed_attempts)
+ self.assertEqual(3, re.last_attempt.attempt_number)
self.assertTrue(re.last_attempt.has_exception)
self.assertTrue(isinstance(re.last_attempt.value, IOError))
+ def test_wrapped_exception(self):
+ self.assertTrue(_retryable_test_with_exception_type_io_wrap(NoIOErrorAfterCount(5)))
+
+ try:
+ _retryable_test_with_exception_type_io_wrap(NoNameErrorAfterCount(5))
+ self.fail("Expected RetryError")
+ except RetryError as r:
+ self.assertTrue(isinstance(r.last_attempt.value, NameError))
+
+ try:
+ _retryable_test_with_exception_type_io_attempt_limit_wrap(NoIOErrorAfterCount(5))
+ self.fail("RetryError expected")
+ except RetryError as re:
+ self.assertEqual(3, re.last_attempt.attempt_number)
+ self.assertTrue(re.last_attempt.has_exception)
+ self.assertTrue(isinstance(re.last_attempt.value, IOError))
+
+ def test_defaults(self):
+ self.assertTrue(_retryable_default(NoNameErrorAfterCount(5)))
+ self.assertTrue(_retryable_default_f(NoNameErrorAfterCount(5)))
+
if __name__ == '__main__':
unittest.main() \ No newline at end of file