forked from Rockachopa/Timmy-time-dashboard
@@ -361,6 +361,41 @@ class TestRun:
|
||||
assert response == "ok"
|
||||
|
||||
|
||||
# ── _handle_retry_or_raise ────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestHandleRetryOrRaise:
|
||||
def test_raises_on_last_attempt(self):
|
||||
BaseAgent = _make_base_class()
|
||||
with pytest.raises(ValueError, match="boom"):
|
||||
BaseAgent._handle_retry_or_raise(
|
||||
ValueError("boom"), attempt=3, max_retries=3, transient=False,
|
||||
)
|
||||
|
||||
def test_raises_on_last_attempt_transient(self):
|
||||
BaseAgent = _make_base_class()
|
||||
exc = httpx.ConnectError("down")
|
||||
with pytest.raises(httpx.ConnectError):
|
||||
BaseAgent._handle_retry_or_raise(
|
||||
exc, attempt=3, max_retries=3, transient=True,
|
||||
)
|
||||
|
||||
def test_no_raise_on_early_attempt(self):
|
||||
BaseAgent = _make_base_class()
|
||||
# Should return None (no raise) on non-final attempt
|
||||
result = BaseAgent._handle_retry_or_raise(
|
||||
ValueError("retry me"), attempt=1, max_retries=3, transient=False,
|
||||
)
|
||||
assert result is None
|
||||
|
||||
def test_no_raise_on_early_transient(self):
|
||||
BaseAgent = _make_base_class()
|
||||
result = BaseAgent._handle_retry_or_raise(
|
||||
httpx.ReadTimeout("busy"), attempt=2, max_retries=3, transient=True,
|
||||
)
|
||||
assert result is None
|
||||
|
||||
|
||||
# ── get_capabilities / get_status ────────────────────────────────────────────
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user