1
0
mirror of https://github.com/ihabunek/toot.git synced 2024-11-03 04:17:21 -05:00
toot/tests/utils.py

45 lines
1.1 KiB
Python
Raw Permalink Normal View History

2018-06-07 04:00:50 -04:00
"""
Helpers for testing.
"""
import time
from typing import Any, Callable
2017-04-15 08:46:22 -04:00
class MockResponse:
def __init__(self, response_data={}, ok=True, is_redirect=False):
2017-04-15 08:46:22 -04:00
self.response_data = response_data
self.content = response_data
self.ok = ok
self.is_redirect = is_redirect
2017-04-15 08:46:22 -04:00
def raise_for_status(self):
pass
def json(self):
return self.response_data
def retval(val):
return lambda *args, **kwargs: val
def run_with_retries(fn: Callable[..., Any]):
"""
Run the the given function repeatedly until it finishes without raising an
AssertionError. Sleep a bit between attempts. If the function doesn't
succeed in the given number of tries raises the AssertionError. Used for
tests which should eventually succeed.
"""
# Wait upto 6 seconds with incrementally longer sleeps
delays = [0.1, 0.2, 0.3, 0.4, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
for delay in delays:
try:
return fn()
except AssertionError:
time.sleep(delay)
fn()