Skip to content

Commit b9770b9

Browse files
cameronrsudo-tee
authored andcommitted
test(data): error rendering test
Includes a synthetically crafted case of an error in a message that's no the most recent message to exercise the message rerendering code
1 parent 65b8407 commit b9770b9

File tree

2 files changed

+278
-0
lines changed

2 files changed

+278
-0
lines changed

tests/data/api-error.expected.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"extmarks":[[1,2,0,{"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0129001CoCrBKemk7DqcU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_repeat_linebreak":false}],[2,3,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[3,4,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[4,5,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[5,6,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_repeat_linebreak":true}],[6,9,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0160001eArLyAssT]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_repeat_linebreak":false}],[7,16,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0170001s2OM00h2cDa94A]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_repeat_linebreak":false}]],"timestamp":1760989172,"lines":["","----","","","test 3","","[diff-test.txt](diff-test.txt)","","----","","","> [!ERROR] Simulated: tool/file read failed for earlier assistant message","","This is some sample text","","----","","","> [!ERROR] AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.",""],"actions":[]}

tests/data/api-error.json

Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
[
2+
{
3+
"type": "server.connected",
4+
"properties": {}
5+
},
6+
{
7+
"type": "message.updated",
8+
"properties": {
9+
"info": {
10+
"time": {
11+
"created": 1760935477545
12+
},
13+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
14+
"role": "user",
15+
"id": "msg_9ffef0129001CoCrBKemk7DqcU"
16+
}
17+
}
18+
},
19+
{
20+
"type": "message.part.updated",
21+
"properties": {
22+
"part": {
23+
"text": "test 3",
24+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
25+
"id": "prt_9ffef0129002g2pLXrK05uCBAX",
26+
"type": "text",
27+
"messageID": "msg_9ffef0129001CoCrBKemk7DqcU"
28+
}
29+
}
30+
},
31+
{
32+
"type": "message.part.updated",
33+
"properties": {
34+
"part": {
35+
"text": "Called the Read tool with the following input: {\"filePath\":\"/Users/cam/tmp/a/diff-test.txt\"}",
36+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
37+
"id": "prt_9ffef012b001hSld2vQz1Gi5UF",
38+
"type": "text",
39+
"synthetic": true,
40+
"messageID": "msg_9ffef0129001CoCrBKemk7DqcU"
41+
}
42+
}
43+
},
44+
{
45+
"type": "message.part.updated",
46+
"properties": {
47+
"part": {
48+
"text": "<file>\n00001| this is a string\n00002| \n</file>",
49+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
50+
"id": "prt_9ffef012b002bP9c84axqbkHzF",
51+
"type": "text",
52+
"synthetic": true,
53+
"messageID": "msg_9ffef0129001CoCrBKemk7DqcU"
54+
}
55+
}
56+
},
57+
{
58+
"type": "message.part.updated",
59+
"properties": {
60+
"part": {
61+
"type": "file",
62+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
63+
"id": "prt_9ffef012b003btmYWifFwnpRDU",
64+
"url": "file:///Users/cam/tmp/a/diff-test.txt",
65+
"filename": "diff-test.txt",
66+
"mime": "text/plain",
67+
"messageID": "msg_9ffef0129001CoCrBKemk7DqcU"
68+
}
69+
}
70+
},
71+
{
72+
"type": "session.updated",
73+
"properties": {
74+
"info": {
75+
"time": {
76+
"created": 1760928623043,
77+
"updated": 1760935477550
78+
},
79+
"id": "ses_60079963cffekYiAZT1g5So7dY",
80+
"version": "0.15.0",
81+
"directory": "/Users/cam/tmp/a",
82+
"projectID": "b0b749d27ca2e03482d36bfe846b01ce40ba759b",
83+
"title": "Calling Read tool on diff-test.txt"
84+
}
85+
}
86+
},
87+
{
88+
"type": "message.updated",
89+
"properties": {
90+
"info": {
91+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
92+
"cost": 0,
93+
"tokens": {
94+
"output": 0,
95+
"input": 0,
96+
"cache": {
97+
"write": 0,
98+
"read": 0
99+
},
100+
"reasoning": 0
101+
},
102+
"mode": "plan",
103+
"time": {
104+
"created": 1760935477600
105+
},
106+
"modelID": "claude-sonnet-4-5-20250929",
107+
"providerID": "anthropic",
108+
"id": "msg_9ffef0160001eArLyAssT",
109+
"role": "assistant",
110+
"path": {
111+
"cwd": "/Users/cam/tmp/a",
112+
"root": "/Users/cam/tmp/a"
113+
}
114+
}
115+
}
116+
},
117+
{
118+
"properties": {
119+
"part": {
120+
"id": "prt_9d45d4c40001qRiLd4QuC4JaNy",
121+
"messageID": "msg_9ffef0160001eArLyAssT",
122+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
123+
"text": "This is some sample text",
124+
"time": {
125+
"start": 1760935477600
126+
},
127+
"type": "text"
128+
}
129+
},
130+
"type": "message.part.updated"
131+
},
132+
{
133+
"type": "message.updated",
134+
"properties": {
135+
"info": {
136+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
137+
"cost": 0,
138+
"tokens": {
139+
"output": 0,
140+
"input": 0,
141+
"cache": {
142+
"write": 0,
143+
"read": 0
144+
},
145+
"reasoning": 0
146+
},
147+
"mode": "plan",
148+
"time": {
149+
"created": 1760935477616
150+
},
151+
"modelID": "claude-sonnet-4-5-20250929",
152+
"providerID": "anthropic",
153+
"id": "msg_9ffef0170001s2OM00h2cDa94A",
154+
"role": "assistant",
155+
"path": {
156+
"cwd": "/Users/cam/tmp/a",
157+
"root": "/Users/cam/tmp/a"
158+
}
159+
}
160+
}
161+
},
162+
{
163+
"type": "session.error",
164+
"properties": {
165+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
166+
"error": {
167+
"data": {
168+
"message": "AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits."
169+
},
170+
"name": "UnknownError"
171+
}
172+
}
173+
},
174+
{
175+
"type": "message.updated",
176+
"properties": {
177+
"info": {
178+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
179+
"cost": 0,
180+
"tokens": {
181+
"output": 0,
182+
"input": 0,
183+
"cache": {
184+
"write": 0,
185+
"read": 0
186+
},
187+
"reasoning": 0
188+
},
189+
"mode": "plan",
190+
"time": {
191+
"created": 1760935477616,
192+
"completed": 1760935478001
193+
},
194+
"modelID": "claude-sonnet-4-5-20250929",
195+
"providerID": "anthropic",
196+
"id": "msg_9ffef0170001s2OM00h2cDa94A",
197+
"error": {
198+
"data": {
199+
"message": "AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits."
200+
},
201+
"name": "UnknownError"
202+
},
203+
"role": "assistant",
204+
"path": {
205+
"cwd": "/Users/cam/tmp/a",
206+
"root": "/Users/cam/tmp/a"
207+
}
208+
}
209+
}
210+
},
211+
{
212+
"type": "message.updated",
213+
"properties": {
214+
"info": {
215+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
216+
"cost": 0,
217+
"tokens": {
218+
"output": 0,
219+
"input": 0,
220+
"cache": {
221+
"write": 0,
222+
"read": 0
223+
},
224+
"reasoning": 0
225+
},
226+
"mode": "plan",
227+
"time": {
228+
"created": 1760935477616,
229+
"completed": 1760935478002
230+
},
231+
"modelID": "claude-sonnet-4-5-20250929",
232+
"providerID": "anthropic",
233+
"id": "msg_9ffef0170001s2OM00h2cDa94A",
234+
"error": {
235+
"data": {
236+
"message": "AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits."
237+
},
238+
"name": "UnknownError"
239+
},
240+
"role": "assistant",
241+
"path": {
242+
"cwd": "/Users/cam/tmp/a",
243+
"root": "/Users/cam/tmp/a"
244+
}
245+
}
246+
}
247+
},
248+
{
249+
"type": "message.updated",
250+
"properties": {
251+
"info": {
252+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY",
253+
"id": "msg_9ffef0160001eArLyAssT",
254+
"mode": "plan",
255+
"time": {
256+
"created": 1760935477616,
257+
"completed": 1760935478002
258+
},
259+
"modelID": "claude-sonnet-4-5-20250929",
260+
"providerID": "anthropic",
261+
"error": {
262+
"data": {
263+
"message": "Simulated: tool/file read failed for earlier assistant message"
264+
},
265+
"name": "UnknownError"
266+
},
267+
"role": "assistant"
268+
}
269+
}
270+
},
271+
{
272+
"type": "session.idle",
273+
"properties": {
274+
"sessionID": "ses_60079963cffekYiAZT1g5So7dY"
275+
}
276+
}
277+
]

0 commit comments

Comments
 (0)