Files
OpenJarvis/tests/evals/comparison/test_cli_backend_dispatch.py
T

86 lines
2.6 KiB
Python

"""Verify cli._build_backend correctly dispatches hermes/openclaw."""
from __future__ import annotations
from pathlib import Path
from unittest.mock import patch
import click
import pytest
from openjarvis.evals.cli import BACKENDS, _build_backend
class TestBuildBackendDispatch:
def test_backends_dict_includes_external(self) -> None:
assert "hermes" in BACKENDS
assert "openclaw" in BACKENDS
assert "jarvis-agent" in BACKENDS
assert "jarvis-direct" in BACKENDS
def test_unknown_backend_raises(self) -> None:
with pytest.raises(click.UsageError, match="unknown backend"):
_build_backend(
backend_name="not-real",
engine_key=None,
agent_name="o",
tools=[],
)
def test_hermes_requires_base_url(self) -> None:
with pytest.raises(click.UsageError, match="--base-url"):
_build_backend(
backend_name="hermes",
engine_key=None,
agent_name="o",
tools=[],
base_url=None,
api_key="k",
)
def test_openclaw_requires_api_key(self) -> None:
with pytest.raises(click.UsageError, match="--api-key"):
_build_backend(
backend_name="openclaw",
engine_key=None,
agent_name="o",
tools=[],
base_url="http://x",
api_key=None,
)
def test_hermes_returns_hermes_backend(self) -> None:
from openjarvis.evals.comparison.third_party import (
ThirdPartyConfig,
ThirdPartyEntry,
)
cfg = ThirdPartyConfig(
entries={
"hermes": ThirdPartyEntry(
name="hermes",
path=Path("/tmp"),
pinned_commit="abc",
runner_script="x",
)
}
)
with (
patch(
"openjarvis.evals.backends.external.hermes_agent.load_third_party_config",
return_value=cfg,
),
patch("openjarvis.evals.backends.external.hermes_agent.verify_commit_pin"),
):
from openjarvis.evals.backends.external import HermesBackend
backend = _build_backend(
backend_name="hermes",
engine_key=None,
agent_name="o",
tools=[],
base_url="http://x",
api_key="k",
)
assert isinstance(backend, HermesBackend)