Skip to content

test(core): add unit tests for agent runtime core modules #139

@HayWolf

Description

@HayWolf

来源

PR #136 review 评估后续跟进项。分解重构将函数提取到独立模块后,尚缺少对应的单元测试。

涉及的 review comments

#2 — agent_session_events.rs:13 — handle_agent_event 无测试

涉及 7 个共享可变状态变量(message_id, reasoning_message_id, reasoning_buffer, last_usage 等)。建议覆盖:TextDelta 创建/复用 message_id、ThinkingStart 重置、ThinkingDelta 累积发送、ThinkingEnd 带 signature、MessageEnd 空内容跳过、MessageDiscarded 使用 last_completed_message_id、emit_usage_update 去重。

#3 — agent_session_execution.rs:495 — execute_plan_checkpoint abort/cancel 无测试

建议集成测试覆盖:PlanUpdated 在 abort 前发送、checkpoint_requested 设为 true、write_plan_file I/O 失败返回优雅错误、message persistence 失败处理。

#4 — agent_session_history.rs:31 — convert_history_messages 无测试

最复杂函数,多阶段算法。建议覆盖:基本 user->assistant->tool result 序列、tool calls 合并到前面 assistant、PendingThinking 附加到正确 assistant、context_reset_marker 裁剪、reasoning 消息阻断 tool-call 合并、多个 tool calls 从同一 API response 合并。

#13 — agent_run_event_handler.rs:49 — 事件分类纯函数无测试

is_terminal_runtime_event、should_complete_reasoning_for_event、terminal_event_status、build_orphaned_run_terminal_event 等。建议覆盖各 variant 和 RunInterrupted + cancellation_requested 双映射。

#15 — agent_session_tools.rs:657 — validate_clarify_input 无测试

纯校验函数。建议覆盖:缺失 question、空 question、缺失 options、0/1/2/5/6 个 options、多个 recommended、空 label/description。

#16 — agent_session_tools.rs:573 — effective_api_for_model 无测试

15+ provider 分支的 provider-to-API 映射。建议至少覆盖 OpenAI、Anthropic、Google、Ollama、DeepSeek、AmazonBedrock、Custom。

#17 — agent_session_tools.rs:615 — agent_tool_result_from_output UTF-8 截断无测试

8MB 截断 + while !is_char_boundary UTF-8 修复循环。建议测试 content 在多字节字符边界处截断时输出仍为合法 UTF-8。

#18 — agent_session_types.rs:140 — 纯函数无测试

normalize_profile_response_style、parse_transport、parse_positive_u32、normalize_provider_options 等。

建议

这些测试可分批提交,优先覆盖 #4 (history convert) 和 #2 (event handler),因为它们出错影响面最大。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions