fix: clear rate-limit hot-settings cache and add retry loop for maintenance-mode tests
DevPlace CI / test (push) Successful in 29m11s
DevPlace CI / test (push) Successful in 29m11s
- Invalidate `_hot_settings_value` and `_hot_settings_at` in `_patch_limits` so stale cached limits from prior tests do not persist after monkey-patching `get_int_setting`. - Add a polling retry loop (up to 5 seconds) in `test_maintenance_mode_blocks_guests` to handle eventual consistency of the maintenance-mode flag propagation. - Replace brittle hardcoded `@bob_test` assertion in mention test with dynamic `data-username` attribute extraction from the active dropdown item. - Replace `asyncio.run` calls in bot unit tests with shared `run_async` helper from `tests.conftest` to avoid event-loop conflicts in the test suite. - Change `insert` to `upsert` with `["uid"]` conflict target in Gitea test fixture to prevent duplicate-key errors on repeated test runs. - Replace `asyncio.new_event_loop().run_until_complete` in Telegram worker tests with the same shared `run_async` helper for consistency.
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
|
||||
import asyncio
|
||||
import types
|
||||
|
||||
from devplacepy.services.bot import bot as bot_module
|
||||
from devplacepy.services.bot.bot import DevPlaceBot
|
||||
from tests.conftest import run_async
|
||||
|
||||
STALE_KEY = "019ec5b5-410c-7660-a129-c80589859080"
|
||||
OWN_KEY = "019ed655-b699-7fa0-bf25-dd77910fb6d4"
|
||||
@@ -28,7 +28,7 @@ def _fake_bot(cached_key, fetched_key):
|
||||
|
||||
def test_adopt_replaces_stale_cached_key_from_recycled_slot():
|
||||
fake = _fake_bot(cached_key=STALE_KEY, fetched_key=OWN_KEY)
|
||||
result = asyncio.run(DevPlaceBot._adopt_account_api_key(fake))
|
||||
result = run_async(DevPlaceBot._adopt_account_api_key(fake))
|
||||
assert result is True
|
||||
assert fake.llm.api_key == OWN_KEY
|
||||
assert fake.state.account_api_key == OWN_KEY
|
||||
@@ -37,7 +37,7 @@ def test_adopt_replaces_stale_cached_key_from_recycled_slot():
|
||||
|
||||
def test_adopt_keeps_matching_key_without_resaving():
|
||||
fake = _fake_bot(cached_key=OWN_KEY, fetched_key=OWN_KEY)
|
||||
result = asyncio.run(DevPlaceBot._adopt_account_api_key(fake))
|
||||
result = run_async(DevPlaceBot._adopt_account_api_key(fake))
|
||||
assert result is True
|
||||
assert fake.llm.api_key == OWN_KEY
|
||||
assert fake.saves == []
|
||||
@@ -49,7 +49,7 @@ def test_adopt_fails_when_own_key_unavailable(monkeypatch):
|
||||
|
||||
monkeypatch.setattr(bot_module.asyncio, "sleep", _instant_sleep)
|
||||
fake = _fake_bot(cached_key=STALE_KEY, fetched_key="")
|
||||
result = asyncio.run(DevPlaceBot._adopt_account_api_key(fake))
|
||||
result = run_async(DevPlaceBot._adopt_account_api_key(fake))
|
||||
assert result is False
|
||||
assert fake.llm.api_key == STALE_KEY
|
||||
assert fake.saves == []
|
||||
|
||||
@@ -94,7 +94,7 @@ def _make_user_issues_gitea():
|
||||
_counter_issues_gitea[0] += 1
|
||||
uid = f"issuetest-user-{_counter_issues_gitea[0]}"
|
||||
username = f"issuetester{_counter_issues_gitea[0]}"
|
||||
get_table("users").insert(
|
||||
get_table("users").upsert(
|
||||
{
|
||||
"uid": uid,
|
||||
"username": username,
|
||||
@@ -102,7 +102,8 @@ def _make_user_issues_gitea():
|
||||
"xp": 0,
|
||||
"level": 1,
|
||||
"is_active": True,
|
||||
}
|
||||
},
|
||||
["uid"],
|
||||
)
|
||||
return uid, username
|
||||
def _unread(user_uid):
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
|
||||
import asyncio
|
||||
|
||||
from devplacepy.services.telegram.backend import FakeTelegramBackend
|
||||
from devplacepy.services.telegram.worker import TelegramWorker
|
||||
from tests.conftest import run_async
|
||||
|
||||
|
||||
def _run(coro):
|
||||
return asyncio.new_event_loop().run_until_complete(coro)
|
||||
return run_async(coro)
|
||||
|
||||
|
||||
def _worker(backend):
|
||||
|
||||
Reference in New Issue
Block a user