feat: add openclaw_connect_metadata function and update compatibility check logic, fixes #156
This commit is contained in:
@@ -50,6 +50,11 @@ async def test_check_gateway_runtime_compatibility_prefers_schema_version(
|
||||
return {"version": "2026.2.13"}
|
||||
raise AssertionError(f"unexpected method: {method}")
|
||||
|
||||
async def _fake_connect_metadata(*, config: GatewayConfig) -> object | None:
|
||||
_ = config
|
||||
return None
|
||||
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_connect_metadata", _fake_connect_metadata)
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_call", _fake_openclaw_call)
|
||||
|
||||
result = await gateway_compat.check_gateway_runtime_compatibility(
|
||||
@@ -62,6 +67,34 @@ async def test_check_gateway_runtime_compatibility_prefers_schema_version(
|
||||
assert result.current_version == "2026.2.13"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_check_gateway_runtime_compatibility_prefers_connect_metadata(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
calls: list[str] = []
|
||||
|
||||
async def _fake_connect_metadata(*, config: GatewayConfig) -> object | None:
|
||||
_ = config
|
||||
return {"server": {"version": "2026.2.21-2"}}
|
||||
|
||||
async def _fake_openclaw_call(method: str, params: object = None, *, config: object) -> object:
|
||||
_ = (params, config)
|
||||
calls.append(method)
|
||||
raise AssertionError(f"unexpected method: {method}")
|
||||
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_connect_metadata", _fake_connect_metadata)
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_call", _fake_openclaw_call)
|
||||
|
||||
result = await gateway_compat.check_gateway_runtime_compatibility(
|
||||
GatewayConfig(url="ws://gateway.example/ws"),
|
||||
minimum_version="2026.1.30",
|
||||
)
|
||||
|
||||
assert calls == []
|
||||
assert result.compatible is True
|
||||
assert result.current_version == "2026.2.21-2"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_check_gateway_runtime_compatibility_falls_back_to_health(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
@@ -77,6 +110,11 @@ async def test_check_gateway_runtime_compatibility_falls_back_to_health(
|
||||
raise OpenClawGatewayError("unknown method")
|
||||
return {"version": "2026.2.0"}
|
||||
|
||||
async def _fake_connect_metadata(*, config: GatewayConfig) -> object | None:
|
||||
_ = config
|
||||
return None
|
||||
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_connect_metadata", _fake_connect_metadata)
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_call", _fake_openclaw_call)
|
||||
|
||||
result = await gateway_compat.check_gateway_runtime_compatibility(
|
||||
@@ -104,6 +142,11 @@ async def test_check_gateway_runtime_compatibility_uses_health_when_status_has_n
|
||||
return {"uptime": 1234}
|
||||
return {"version": "2026.2.0"}
|
||||
|
||||
async def _fake_connect_metadata(*, config: GatewayConfig) -> object | None:
|
||||
_ = config
|
||||
return None
|
||||
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_connect_metadata", _fake_connect_metadata)
|
||||
monkeypatch.setattr(gateway_compat, "openclaw_call", _fake_openclaw_call)
|
||||
|
||||
result = await gateway_compat.check_gateway_runtime_compatibility(
|
||||
|
||||
Reference in New Issue
Block a user