free-claude-code/tests/test_event_parser.py
2026-01-30 23:32:02 -08:00

106 lines
3.2 KiB
Python

from messaging.event_parser import parse_cli_event
def test_parse_cli_event_assistant_content():
event = {
"type": "assistant",
"message": {
"content": [
{"type": "thinking", "thinking": "Internal thought"},
{"type": "text", "text": "Hello user"},
]
},
}
results = parse_cli_event(event)
assert len(results) == 2
assert results[0] == {"type": "thinking", "text": "Internal thought"}
assert results[1] == {"type": "content", "text": "Hello user"}
def test_parse_cli_event_assistant_tools():
event = {
"type": "assistant",
"message": {
"content": [{"type": "tool_use", "name": "ls", "input": {"path": "."}}]
},
}
results = parse_cli_event(event)
assert len(results) == 1
assert results[0]["type"] == "tool_start"
assert results[0]["tools"][0]["name"] == "ls"
def test_parse_cli_event_assistant_subagent():
event = {
"type": "assistant",
"message": {
"content": [
{
"type": "tool_use",
"name": "Task",
"input": {"description": "Fix bug"},
}
]
},
}
results = parse_cli_event(event)
assert len(results) == 1
assert results[0]["type"] == "subagent_start"
assert results[0]["tasks"] == ["Fix bug"]
def test_parse_cli_event_content_block_delta():
# Text delta
event_text = {
"type": "content_block_delta",
"delta": {"type": "text_delta", "text": " more"},
}
results_text = parse_cli_event(event_text)
assert results_text == [{"type": "content", "text": " more"}]
# Thinking delta
event_think = {
"type": "content_block_delta",
"delta": {"type": "thinking_delta", "thinking": " more thought"},
}
results_think = parse_cli_event(event_think)
assert results_think == [{"type": "thinking", "text": " more thought"}]
def test_parse_cli_event_content_block_start():
event = {
"type": "content_block_start",
"content_block": {
"type": "tool_use",
"name": "Task",
"input": {"description": "deploy"},
},
}
results = parse_cli_event(event)
assert results == [{"type": "subagent_start", "tasks": ["deploy"]}]
def test_parse_cli_event_error():
event = {"type": "error", "error": {"message": "something failed"}}
results = parse_cli_event(event)
assert results == [{"type": "error", "message": "something failed"}]
def test_parse_cli_event_exit_success():
event = {"type": "exit", "code": 0}
results = parse_cli_event(event)
assert results == [{"type": "complete", "status": "success"}]
def test_parse_cli_event_exit_failure():
event = {"type": "exit", "code": 1, "stderr": "fatal error"}
results = parse_cli_event(event)
assert len(results) == 2
assert results[0] == {"type": "error", "message": "fatal error"}
assert results[1] == {"type": "complete", "status": "failed"}
def test_parse_cli_event_invalid_input():
assert parse_cli_event(None) == []
assert parse_cli_event("not a dict") == []
assert parse_cli_event({"type": "unknown"}) == []