diff --git a/tests/unit/orchestrator/test_bootstrap.py b/tests/unit/orchestrator/test_bootstrap.py index 4630f5a..54e2677 100644 --- a/tests/unit/orchestrator/test_bootstrap.py +++ b/tests/unit/orchestrator/test_bootstrap.py @@ -35,12 +35,12 @@ def _config(tmp: str) -> Config: ) -def _record(**kw) -> RunRecord: - defaults: dict[str, object] = dict( - owner="o", repo="r", issue_number=1, slug="s1", agent_name="a", - bottle_names=["claude"], backend_name="docker", agent_git_user="bot", - pr_number=5, status="running", last_checkin_at="2026-01-01T00:00:00+00:00", - ) +def _record(**kw: object) -> RunRecord: + defaults: dict[str, object] = { + "owner": "o", "repo": "r", "issue_number": 1, "slug": "s1", "agent_name": "a", + "bottle_names": ["claude"], "backend_name": "docker", "agent_git_user": "bot", + "pr_number": 5, "status": "running", "last_checkin_at": "2026-01-01T00:00:00+00:00", + } defaults.update(kw) return RunRecord(**defaults) # type: ignore[arg-type] @@ -169,10 +169,10 @@ class BuildTest(unittest.TestCase): config = _config(tmp) with patch.dict(os.environ, {"GITEA_TOKEN": "tok"}): server, _, _ = build(config) - host, port = server.server_address + addr = server.server_address server.server_close() - self.assertEqual("127.0.0.1", host) - self.assertGreater(port, 0) + self.assertEqual("127.0.0.1", addr[0]) + self.assertGreater(addr[1], 0) if __name__ == "__main__": diff --git a/tests/unit/orchestrator/test_main.py b/tests/unit/orchestrator/test_main.py index ddd8157..5859546 100644 --- a/tests/unit/orchestrator/test_main.py +++ b/tests/unit/orchestrator/test_main.py @@ -4,7 +4,7 @@ from __future__ import annotations import io import unittest -from unittest.mock import MagicMock, patch +from unittest.mock import patch from bot_bottle.orchestrator.__main__ import main from bot_bottle.orchestrator.config import Config diff --git a/tests/unit/orchestrator/test_watchdog.py b/tests/unit/orchestrator/test_watchdog.py index 0fc46ee..66c7030 100644 --- a/tests/unit/orchestrator/test_watchdog.py +++ b/tests/unit/orchestrator/test_watchdog.py @@ -71,7 +71,9 @@ class WatchdogSweepTest(unittest.TestCase): self.wd.start() time.sleep(0.05) # enough for several iterations at 0.01s tick self.wd.stop() - self.assertEqual(STATUS_FROZEN, self.store.get("o", "r", 5).status) + rec = self.store.get("o", "r", 5) + assert rec is not None + self.assertEqual(STATUS_FROZEN, rec.status) if __name__ == "__main__": diff --git a/tests/unit/test_contrib_gitea_client.py b/tests/unit/test_contrib_gitea_client.py index f90c5f1..34ba3e3 100644 --- a/tests/unit/test_contrib_gitea_client.py +++ b/tests/unit/test_contrib_gitea_client.py @@ -17,12 +17,13 @@ def _client() -> GiteaClient: def _mock_response(body: bytes) -> MagicMock: resp = MagicMock() resp.read.return_value = body - resp.__enter__ = lambda s: s - resp.__exit__ = MagicMock(return_value=False) + resp.__enter__.return_value = resp + resp.__exit__.return_value = False return resp class GiteaClientTest(unittest.TestCase): + # pylint: disable=protected-access def setUp(self): self.client = _client() @@ -46,10 +47,8 @@ class GiteaClientTest(unittest.TestCase): self.assertTrue(self.client.is_org_member("myorg", "alice")) def test_is_org_member_false_on_http_error(self): - with patch( - "urllib.request.urlopen", - side_effect=urllib.error.HTTPError("url", 404, "Not Found", {}, None), - ): + err = urllib.error.HTTPError("url", 404, "Not Found", None, None) # type: ignore[arg-type] + with patch("urllib.request.urlopen", side_effect=err): self.assertFalse(self.client.is_org_member("myorg", "nobody")) def test_get_issue(self): @@ -84,34 +83,30 @@ class GiteaClientTest(unittest.TestCase): mock_open.assert_called_once() def test_request_builds_correct_url(self): - captured: list[object] = [] + import urllib.request as ureq + captured: list[ureq.Request] = [] - def fake_urlopen(req, timeout): + def fake_urlopen(req: ureq.Request, timeout: float) -> MagicMock: # pylint: disable=unused-argument captured.append(req) return _mock_response(b"{}") with patch("urllib.request.urlopen", side_effect=fake_urlopen): self.client.get_issue(5) - import urllib.request as ureq - req = captured[0] - assert isinstance(req, ureq.Request) - self.assertIn("/issues/5", req.full_url) + self.assertIn("/issues/5", captured[0].full_url) def test_request_sends_auth_header(self): - captured: list[object] = [] + import urllib.request as ureq + captured: list[ureq.Request] = [] - def fake_urlopen(req, timeout): + def fake_urlopen(req: ureq.Request, timeout: float) -> MagicMock: # pylint: disable=unused-argument captured.append(req) return _mock_response(b"{}") with patch("urllib.request.urlopen", side_effect=fake_urlopen): self.client.get_issue(1) - import urllib.request as ureq - req = captured[0] - assert isinstance(req, ureq.Request) - self.assertEqual("token tok", req.get_header("Authorization")) + self.assertEqual("token tok", captured[0].get_header("Authorization")) class GiteaForgeTest(unittest.TestCase):