mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 14:07:55 +00:00
86 lines
2.6 KiB
Python
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)
|