Rebase onto upstream (a4d95fd)
#12
@@ -0,0 +1,57 @@
|
||||
"""Test registration of native Anthropic tools in the agent loop."""
|
||||
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
from nanobot.agent.loop import AgentLoop
|
||||
from nanobot.agent.tools.anthropic import (
|
||||
BashTool20250124,
|
||||
EditTool20250728,
|
||||
ComputerTool20251124,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_provider():
|
||||
"""Create a mock provider."""
|
||||
provider = MagicMock()
|
||||
provider.chat = AsyncMock(return_value="test response")
|
||||
provider.get_default_model = MagicMock(return_value="test-model")
|
||||
return provider
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_bus():
|
||||
"""Create a mock message bus."""
|
||||
bus = MagicMock()
|
||||
bus.publish_outbound = AsyncMock()
|
||||
return bus
|
||||
|
||||
|
||||
def test_native_tools_registered(mock_provider, mock_bus, tmp_path):
|
||||
"""Test that native Anthropic tools are registered in the agent loop."""
|
||||
# Create agent loop
|
||||
loop = AgentLoop(
|
||||
provider=mock_provider,
|
||||
bus=mock_bus,
|
||||
workspace=tmp_path,
|
||||
)
|
||||
|
||||
# Get all registered tool names
|
||||
tool_names = [tool.name for tool in loop.tools._tools.values()]
|
||||
|
||||
# Verify native tools are registered (using their internal names)
|
||||
assert "bash" in tool_names, "bash tool should be registered"
|
||||
assert "str_replace_editor" in tool_names, "str_replace_editor tool should be registered"
|
||||
assert "computer" in tool_names, "computer tool should be registered"
|
||||
|
||||
# Verify we can get the tool instances
|
||||
bash_tool = loop.tools.get("bash")
|
||||
assert isinstance(bash_tool, BashTool20250124)
|
||||
|
||||
editor_tool = loop.tools.get("str_replace_editor")
|
||||
assert isinstance(editor_tool, EditTool20250728)
|
||||
|
||||
computer_tool = loop.tools.get("computer")
|
||||
assert isinstance(computer_tool, ComputerTool20251124)
|
||||
Reference in New Issue
Block a user