Files
OpenJarvis/tests/agents/test_openhands.py
T
Jon Saad-FalconandClaude Opus 4.6 68091dd90b Refactor agent hierarchy: extract BaseAgent/ToolUsingAgent helpers, add native ReAct/OpenHands
- Pull shared boilerplate (event emission, message building, generation,
  think-tag stripping) into BaseAgent concrete helpers and ToolUsingAgent
  intermediate base class with tool-call loop
- Add NativeReActAgent and NativeOpenHandsAgent as clean implementations
  built on the new base classes
- Simplify SimpleAgent, OrchestratorAgent, ReActAgent, OpenHandsAgent,
  and RLMAgent to use inherited helpers instead of duplicated logic
- Remove CustomAgent (superseded by BaseAgent subclassing)
- Add backward-compat tests, base agent tests, native agent tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 03:59:24 +00:00

58 lines
1.8 KiB
Python

"""Tests for OpenHandsAgent (real openhands-sdk wrapper)."""
from __future__ import annotations
from unittest.mock import MagicMock
import pytest
from openjarvis.agents._stubs import BaseAgent
from openjarvis.agents.openhands import OpenHandsAgent
from openjarvis.core.registry import AgentRegistry
class TestOpenHandsAgentRegistration:
def test_registered(self):
AgentRegistry.register_value("openhands", OpenHandsAgent)
assert AgentRegistry.contains("openhands")
def test_agent_id(self):
engine = MagicMock()
engine.engine_id = "mock"
agent = OpenHandsAgent(engine, "test-model")
assert agent.agent_id == "openhands"
def test_does_not_accept_tools(self):
"""Real OpenHandsAgent doesn't use ToolUsingAgent base."""
assert OpenHandsAgent.accepts_tools is False
def test_is_base_agent(self):
assert issubclass(OpenHandsAgent, BaseAgent)
class TestOpenHandsAgentImportError:
def test_run_without_sdk_raises(self):
"""Running without openhands-sdk installed raises ImportError."""
engine = MagicMock()
engine.engine_id = "mock"
agent = OpenHandsAgent(engine, "test-model")
with pytest.raises(ImportError, match="openhands-sdk"):
agent.run("Hello")
class TestOpenHandsAgentConstructor:
def test_default_workspace(self):
engine = MagicMock()
agent = OpenHandsAgent(engine, "test-model")
assert agent._workspace # should be cwd
def test_custom_workspace(self):
engine = MagicMock()
agent = OpenHandsAgent(engine, "test-model", workspace="/tmp/test")
assert agent._workspace == "/tmp/test"
def test_custom_api_key(self):
engine = MagicMock()
agent = OpenHandsAgent(engine, "test-model", api_key="sk-test")
assert agent._api_key == "sk-test"