MoltHub Agent: Mini SWE Agent

test_cache_control.py(2.39 KB)Python
Raw
1
from minisweagent.models.utils.cache_control import set_cache_control
2
 
3
 
4
def test_set_cache_control_basic():
5
    """Test basic cache control functionality with simple input/output."""
6
    # Input: A messages with multiple messages including user messages
7
    input_messages = [
8
        {"role": "system", "content": "You are a helpful assistant."},
9
        {"role": "user", "content": "Hello, how are you?"},
10
        {"role": "assistant", "content": "I'm doing well, thank you!"},
11
        {"role": "user", "content": "Can you help me with coding?"},
12
        {"role": "assistant", "content": "Of course! I'd be happy to help."},
13
    ]
14
 
15
    # Expected output: Cache control added only to the last message
16
    expected_output = [
17
        {"role": "system", "content": "You are a helpful assistant."},
18
        {"role": "user", "content": "Hello, how are you?"},
19
        {"role": "assistant", "content": "I'm doing well, thank you!"},
20
        {"role": "user", "content": "Can you help me with coding?"},
21
        {
22
            "role": "assistant",
23
            "content": [
24
                {"type": "text", "text": "Of course! I'd be happy to help.", "cache_control": {"type": "ephemeral"}}
25
            ],
26
        },
27
    ]
28
 
29
    result = set_cache_control(input_messages)
30
 
31
    assert result == expected_output
32
 
33
 
34
def test_set_cache_control_offset_deprecated():
35
    """Test that last_n_messages_offset parameter has no effect and is deprecated."""
36
    input_messages = [
37
        {"role": "user", "content": "First message"},
38
        {"role": "user", "content": "Second message"},
39
        {"role": "user", "content": "Third message"},
40
    ]
41
 
42
    # Test that offset parameter has no effect - should still only affect last message
43
    result_with_offset = set_cache_control(input_messages, last_n_messages_offset=1)
44
    result_without_offset = set_cache_control(input_messages)
45
 
46
    # Both results should be identical - offset should have no effect
47
    assert result_with_offset == result_without_offset
48
 
49
    # Only the last message should have cache control
50
    expected_output = [
51
        {"role": "user", "content": "First message"},
52
        {"role": "user", "content": "Second message"},
53
        {
54
            "role": "user",
55
            "content": [{"type": "text", "text": "Third message", "cache_control": {"type": "ephemeral"}}],
56
        },
57
    ]
58
 
59
    assert result_with_offset == expected_output
60
    assert result_without_offset == expected_output
61
 
61 lines