OpenHands/tests/unit/test_condenser.py
Robert Brennan 01ae22ef57
Rename OpenDevin to OpenHands (#3472)
* Replace OpenDevin with OpenHands

* Update CONTRIBUTING.md

* Update README.md

* Update README.md

* update poetry lock; move opendevin folder to openhands

* fix env var

* revert image references in docs

* revert permissions

* revert permissions

---------

Co-authored-by: Xingyao Wang <xingyao6@illinois.edu>
2024-08-20 00:44:54 +08:00

45 lines
1.4 KiB
Python

from unittest.mock import Mock, patch
import pytest
from openhands.core.exceptions import LLMResponseError
from openhands.llm.llm import LLM
from openhands.memory.condenser import MemoryCondenser
@pytest.fixture
def memory_condenser():
return MemoryCondenser()
@pytest.fixture
def mock_llm():
return Mock(spec=LLM)
def test_condense_success(memory_condenser, mock_llm):
mock_llm.completion.return_value = {
'choices': [{'message': {'content': 'Condensed memory'}}]
}
result = memory_condenser.condense('Summarize this', mock_llm)
assert result == 'Condensed memory'
mock_llm.completion.assert_called_once_with(
messages=[{'content': 'Summarize this', 'role': 'user'}]
)
def test_condense_exception(memory_condenser, mock_llm):
mock_llm.completion.side_effect = LLMResponseError('LLM error')
with pytest.raises(LLMResponseError, match='LLM error'):
memory_condenser.condense('Summarize this', mock_llm)
@patch('openhands.memory.condenser.logger')
def test_condense_logs_error(mock_logger, memory_condenser, mock_llm):
mock_llm.completion.side_effect = LLMResponseError('LLM error')
with pytest.raises(LLMResponseError):
memory_condenser.condense('Summarize this', mock_llm)
mock_logger.error.assert_called_once_with(
'Error condensing thoughts: %s', 'LLM error', exc_info=False
)