来源
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),因为它们出错影响面最大。
来源
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),因为它们出错影响面最大。