Skip to content

Commit c0a0a8d

Browse files
committed
test(adapters): add tool_result is_error flag parsing test in Claude Code adapter
Verify that tool_result blocks with boolean is_error: true accurately set ParsedToolCall.is_error to Some(true).
1 parent 1039444 commit c0a0a8d

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

‎crates/lore-core/src/adapters/claude_code.rs‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,4 +949,20 @@ mod tests {
949949
assert_eq!(session.messages.len(), 1);
950950
assert_eq!(session.messages[0].parts.len(), 0);
951951
}
952+
953+
#[test]
954+
fn parses_tool_result_with_is_error_flag() {
955+
let jsonl = concat!(
956+
"{\"type\":\"assistant\",\"sessionId\":\"s1\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"call_err\",\"name\":\"Bash\",\"input\":{\"command\":\"cargo test\"}}]}}\n",
957+
"{\"type\":\"user\",\"sessionId\":\"s1\",\"message\":{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"call_err\",\"content\":\"error[E0425]: cannot find value\",\"is_error\":true}]}}\n"
958+
);
959+
let session = ClaudeCodeAdapter::new().parse_str(jsonl, "tool-err");
960+
assert_eq!(session.status, crate::model::ParseStatus::Ok);
961+
assert_eq!(session.tool_calls.len(), 1);
962+
assert_eq!(session.tool_calls[0].is_error, Some(true));
963+
assert_eq!(
964+
session.tool_calls[0].output_text.as_deref(),
965+
Some("error[E0425]: cannot find value")
966+
);
967+
}
952968
}

0 commit comments

Comments
 (0)