| """Tests that switch_model preserves config_context_length.""" |
|
|
| from unittest.mock import MagicMock, patch |
|
|
| from run_agent import AIAgent |
| from agent.context_compressor import ContextCompressor |
|
|
|
|
| def _make_agent_with_compressor(config_context_length=None) -> AIAgent: |
| """Build a minimal AIAgent with a context_compressor, skipping __init__.""" |
| agent = AIAgent.__new__(AIAgent) |
|
|
| |
| agent.model = "primary-model" |
| agent.provider = "openrouter" |
| agent.base_url = "https://openrouter.ai/api/v1" |
| agent.api_key = "sk-primary" |
| agent.api_mode = "chat_completions" |
| agent.client = MagicMock() |
| agent.quiet_mode = True |
|
|
| |
| agent._config_context_length = config_context_length |
|
|
| |
| compressor = ContextCompressor( |
| model="primary-model", |
| threshold_percent=0.50, |
| base_url="https://openrouter.ai/api/v1", |
| api_key="sk-primary", |
| provider="openrouter", |
| quiet_mode=True, |
| config_context_length=config_context_length, |
| ) |
| agent.context_compressor = compressor |
|
|
| |
| agent._primary_runtime = {} |
|
|
| return agent |
|
|
|
|
| @patch("agent.model_metadata.get_model_context_length", return_value=131_072) |
| def test_switch_model_preserves_config_context_length(mock_ctx_len): |
| """When switching models, config_context_length should be passed to get_model_context_length.""" |
| agent = _make_agent_with_compressor(config_context_length=32_768) |
|
|
| assert agent.context_compressor.model == "primary-model" |
| assert agent.context_compressor.context_length == 32_768 |
|
|
| |
| agent.switch_model("new-model", "openrouter", api_key="sk-new", base_url="https://openrouter.ai/api/v1") |
|
|
| |
| mock_ctx_len.assert_called_once() |
| call_kwargs = mock_ctx_len.call_args.kwargs |
| assert call_kwargs.get("config_context_length") == 32_768 |
|
|
| |
| assert agent.context_compressor.model == "new-model" |
|
|
|
|
| def test_switch_model_without_config_context_length(): |
| """When switching models without config override, config_context_length should be None.""" |
| agent = _make_agent_with_compressor(config_context_length=None) |
|
|
| with patch("agent.model_metadata.get_model_context_length", return_value=128_000) as mock_ctx_len: |
| |
| agent.switch_model("new-model", "openrouter", api_key="sk-new", base_url="https://openrouter.ai/api/v1") |
|
|
| |
| mock_ctx_len.assert_called_once() |
| call_kwargs = mock_ctx_len.call_args.kwargs |
| assert call_kwargs.get("config_context_length") is None |
|
|