@@ -78,8 +78,8 @@ func TestMicroCompactWithSummarizerProducesSummary(t *testing.T) {
7878 }
7979}
8080
81- // TestMicroCompactWithoutSummarizerFallsBackToClear 验证未注册 summarizer 的工具仍使用清除占位 。
82- func TestMicroCompactWithoutSummarizerFallsBackToClear (t * testing.T ) {
81+ // TestMicroCompactWithoutSummarizerFallsBackToSummary 验证未注册 summarizer 的工具使用通用兜底摘要 。
82+ func TestMicroCompactWithoutSummarizerFallsBackToSummary (t * testing.T ) {
8383 t .Parallel ()
8484
8585 messages := []providertypes.Message {
@@ -121,9 +121,12 @@ func TestMicroCompactWithoutSummarizerFallsBackToClear(t *testing.T) {
121121 nil ,
122122 )
123123
124- // read_file 没有 summarizer,应回退到清除
125- if renderDisplayParts (got [2 ].Parts ) != microCompactClearedMessage {
126- t .Fatalf ("expected cleared placeholder for read_file without summarizer, got %q" , renderDisplayParts (got [2 ].Parts ))
124+ summary := renderDisplayParts (got [2 ].Parts )
125+ if summary == microCompactClearedMessage {
126+ t .Fatalf ("expected fallback summary for read_file without summarizer, got cleared placeholder" )
127+ }
128+ if ! strings .Contains (summary , "[summary] filesystem_read_file" ) {
129+ t .Fatalf ("expected fallback summary to include tool name, got %q" , summary )
127130 }
128131}
129132
@@ -176,14 +179,17 @@ func TestMicroCompactMixedSpanWithSummarizer(t *testing.T) {
176179 if ! strings .Contains (renderDisplayParts (got [2 ].Parts ), "[summary]" ) {
177180 t .Fatalf ("expected bash summary in old span, got %q" , renderDisplayParts (got [2 ].Parts ))
178181 }
179- // call-2 read_file 在旧 span,没有 summarizer,应清除
180- if renderDisplayParts (got [3 ].Parts ) != microCompactClearedMessage {
181- t .Fatalf ("expected read_file cleared in old span, got %q" , renderDisplayParts (got [3 ].Parts ))
182+ summary := renderDisplayParts (got [3 ].Parts )
183+ if summary == microCompactClearedMessage {
184+ t .Fatalf ("expected read_file fallback summary in old span, got cleared placeholder" )
185+ }
186+ if ! strings .Contains (summary , "[summary] filesystem_read_file" ) {
187+ t .Fatalf ("expected read_file fallback summary to include tool name, got %q" , summary )
182188 }
183189}
184190
185- // TestMicroCompactSummarizerReturnsEmptyFallsBackToClear 验证 summarizer 返回空字符串时回退到清除 。
186- func TestMicroCompactSummarizerReturnsEmptyFallsBackToClear (t * testing.T ) {
191+ // TestMicroCompactSummarizerReturnsEmptyFallsBackToSummary 验证 summarizer 返回空字符串时回退到通用摘要 。
192+ func TestMicroCompactSummarizerReturnsEmptyFallsBackToSummary (t * testing.T ) {
187193 t .Parallel ()
188194
189195 messages := []providertypes.Message {
@@ -224,8 +230,12 @@ func TestMicroCompactSummarizerReturnsEmptyFallsBackToClear(t *testing.T) {
224230 nil ,
225231 )
226232
227- if renderDisplayParts (got [2 ].Parts ) != microCompactClearedMessage {
228- t .Fatalf ("expected cleared fallback when summarizer returns empty, got %q" , renderDisplayParts (got [2 ].Parts ))
233+ summary := renderDisplayParts (got [2 ].Parts )
234+ if summary == microCompactClearedMessage {
235+ t .Fatalf ("expected fallback summary when summarizer returns empty, got cleared placeholder" )
236+ }
237+ if ! strings .Contains (summary , "[summary] bash" ) {
238+ t .Fatalf ("expected fallback summary to include tool name, got %q" , summary )
229239 }
230240}
231241
@@ -244,6 +254,26 @@ func TestSummarizeOrClearWithNilSummarizers(t *testing.T) {
244254 }
245255}
246256
257+ func TestSummarizeOrClearFallsBackWithoutRegisteredSummarizer (t * testing.T ) {
258+ t .Parallel ()
259+
260+ got := summarizeOrClear (
261+ providertypes.Message {ToolCallID : "call-1" },
262+ "first line\n second line" ,
263+ map [string ]string {"call-1" : "mcp.github.issue" },
264+ nil ,
265+ )
266+ if got == microCompactClearedMessage {
267+ t .Fatalf ("expected fallback summary for MCP tool, got cleared placeholder" )
268+ }
269+ if ! strings .Contains (got , "[summary] mcp.github.issue" ) {
270+ t .Fatalf ("expected MCP tool name in fallback summary, got %q" , got )
271+ }
272+ if ! strings .Contains (got , "lines=2" ) {
273+ t .Fatalf ("expected line count in fallback summary, got %q" , got )
274+ }
275+ }
276+
247277// TestSummarizeOrClearWithToolNamesLookup 验证 toolNames map 查找工具名。
248278func TestSummarizeOrClearWithToolNamesLookup (t * testing.T ) {
249279 t .Parallel ()
@@ -321,8 +351,11 @@ func TestSummarizeOrClearSanitizationEmptyFallback(t *testing.T) {
321351 },
322352 )
323353
324- if got != microCompactClearedMessage {
325- t .Fatalf ("expected cleared fallback when sanitized summary is empty, got %q" , got )
354+ if got == microCompactClearedMessage {
355+ t .Fatalf ("expected fallback summary when sanitized summary is empty, got cleared placeholder" )
356+ }
357+ if ! strings .Contains (got , "[summary] bash" ) {
358+ t .Fatalf ("expected fallback summary to include tool name, got %q" , got )
326359 }
327360}
328361
0 commit comments