add mcp and online search
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from src.agent_tools import build_tool_context, default_tool_registry, execute_tool
|
||||
from src.agent_types import AgentPermissions, AgentRuntimeConfig
|
||||
from src.config_runtime import ConfigRuntime
|
||||
|
||||
|
||||
class ConfigRuntimeTests(unittest.TestCase):
|
||||
def test_config_runtime_loads_and_merges_sources(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
workspace = Path(tmp_dir)
|
||||
claude_dir = workspace / '.claude'
|
||||
claude_dir.mkdir()
|
||||
(claude_dir / 'settings.json').write_text(
|
||||
'{"model":{"name":"project-model","temperature":0.1},"review":{"strict":false}}',
|
||||
encoding='utf-8',
|
||||
)
|
||||
(claude_dir / 'settings.local.json').write_text(
|
||||
'{"model":{"temperature":0.0},"review":{"strict":true}}',
|
||||
encoding='utf-8',
|
||||
)
|
||||
runtime = ConfigRuntime.from_workspace(workspace)
|
||||
|
||||
self.assertTrue(runtime.has_config())
|
||||
self.assertEqual(runtime.get_value('model.name'), 'project-model')
|
||||
self.assertEqual(runtime.get_value('model.temperature'), 0.0)
|
||||
self.assertEqual(runtime.get_value('review.strict'), True)
|
||||
self.assertIn('Config sources: 2', runtime.render_summary())
|
||||
|
||||
def test_config_runtime_persists_set_value(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
workspace = Path(tmp_dir)
|
||||
runtime = ConfigRuntime.from_workspace(workspace)
|
||||
mutation = runtime.set_value('review.mode', 'strict', source='local')
|
||||
restored = ConfigRuntime.from_workspace(workspace)
|
||||
|
||||
self.assertEqual(mutation.source_name, 'local')
|
||||
self.assertEqual(restored.get_value('review.mode'), 'strict')
|
||||
self.assertIn('review.mode', restored.render_keys())
|
||||
self.assertEqual(json.loads(restored.render_value('review.mode')), 'strict')
|
||||
|
||||
def test_config_tools_execute_against_runtime(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||
workspace = Path(tmp_dir)
|
||||
runtime = ConfigRuntime.from_workspace(workspace)
|
||||
context = build_tool_context(
|
||||
AgentRuntimeConfig(
|
||||
cwd=workspace,
|
||||
permissions=AgentPermissions(allow_file_write=True),
|
||||
),
|
||||
config_runtime=runtime,
|
||||
)
|
||||
set_result = execute_tool(
|
||||
default_tool_registry(),
|
||||
'config_set',
|
||||
{'key_path': 'review.mode', 'value': 'strict'},
|
||||
context,
|
||||
)
|
||||
list_result = execute_tool(
|
||||
default_tool_registry(),
|
||||
'config_list',
|
||||
{'prefix': 'review'},
|
||||
context,
|
||||
)
|
||||
get_result = execute_tool(
|
||||
default_tool_registry(),
|
||||
'config_get',
|
||||
{'key_path': 'review.mode'},
|
||||
context,
|
||||
)
|
||||
|
||||
self.assertTrue(set_result.ok)
|
||||
self.assertEqual(set_result.metadata.get('source_name'), 'local')
|
||||
self.assertIn('# Config Keys', list_result.content)
|
||||
self.assertIn('review.mode', list_result.content)
|
||||
self.assertIn('# Config Value', get_result.content)
|
||||
self.assertIn('"strict"', get_result.content)
|
||||
Reference in New Issue
Block a user