blob: 9f8a1152f744d8d51c5aa6f1e7f13c8cb734619a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# Changelog — 2026-03-31 #02
## Comprehensive test suite and bug fixes
### Tests Added
- **structs_spec.rb**: Added struct equality tests (same values equal, different values not equal)
- **errors_spec.rb**: Added StandardError inheritance test, rescue-as-StandardError test, RateLimitError retry_after default, rescue-as-Error test
- **copilot_spec.rb**: Added tests for:
- VERSION constant accessibility
- Multiple tool calls in a single response
- Empty tools array omits `tools` key from request body
- TextBlock array in user messages converted to string content
- ToolResultBlock with array content (Array of TextBlocks)
- ToolResultBlock with is_error: true
- finish_reason "length" maps to :max_tokens stop_reason
- Assistant message containing mixed text + tool_use blocks
- Streaming usage data capture
- Multiple parallel tool calls in streaming
- Copilot token caching (reuses token, only 1 token request for 2 chats)
- Authentication failure on Copilot token exchange
### Bug Fixes
- **copilot.rb**: Fixed `Array(hash)` bug in `build_wire_messages` — `Array()` on a Hash converts it to key-value pairs instead of wrapping in an array. Replaced with explicit `is_a?(Array)` check.
- **copilot.rb**: Fixed empty argument fragment yielding in streaming — empty string arguments from initial tool_call chunks were being yielded as `tool_use_delta` events. Added `next if arg_frag.empty?` guard.
### Total Test Count
84 examples, 0 failures across 4 spec files.
|