From c10a34604f7a5cb945c5bb1e407c65bf4723910d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=BE=99=200668001470?= Date: Mon, 16 Mar 2026 08:48:13 +0800 Subject: [PATCH] test(agent): move transient retry regression out of merge hotpath --- pkg/agent/loop_test.go | 92 +++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/pkg/agent/loop_test.go b/pkg/agent/loop_test.go index f23f4b22f..410914453 100644 --- a/pkg/agent/loop_test.go +++ b/pkg/agent/loop_test.go @@ -845,52 +845,6 @@ func TestAgentLoop_ContextExhaustionRetry(t *testing.T) { } } -func TestAgentLoop_TransientProviderRetry(t *testing.T) { - tmpDir, err := os.MkdirTemp("", "agent-test-*") - if err != nil { - t.Fatalf("Failed to create temp dir: %v", err) - } - defer os.RemoveAll(tmpDir) - - cfg := &config.Config{ - Agents: config.AgentsConfig{ - Defaults: config.AgentDefaults{ - Workspace: tmpDir, - Model: "test-model", - MaxTokens: 4096, - MaxToolIterations: 10, - }, - }, - } - - msgBus := bus.NewMessageBus() - provider := &failFirstMockProvider{ - failures: 1, - failError: fmt.Errorf("API error: status: 500 temporary upstream failure"), - successResp: "Recovered after transient provider failure", - } - - al := NewAgentLoop(cfg, msgBus, provider) - - response, err := al.ProcessDirectWithChannel( - context.Background(), - "retry this request", - "test-session-transient", - "cli", - "direct", - ) - if err != nil { - t.Fatalf("Expected success after transient retry, got error: %v", err) - } - - if response != "Recovered after transient provider failure" { - t.Fatalf("response = %q, want %q", response, "Recovered after transient provider failure") - } - if provider.currentCall != 2 { - t.Fatalf("expected 2 calls (1 fail + 1 success), got %d", provider.currentCall) - } -} - // TestProcessDirectWithChannel_TriggersMCPInitialization verifies that // ProcessDirectWithChannel triggers MCP initialization when MCP is enabled. // Note: Manager is only initialized when at least one MCP server is configured @@ -1189,6 +1143,52 @@ func TestHandleReasoning(t *testing.T) { }) } +func TestAgentLoop_TransientProviderRetry(t *testing.T) { + tmpDir, err := os.MkdirTemp("", "agent-test-*") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + defer os.RemoveAll(tmpDir) + + cfg := &config.Config{ + Agents: config.AgentsConfig{ + Defaults: config.AgentDefaults{ + Workspace: tmpDir, + Model: "test-model", + MaxTokens: 4096, + MaxToolIterations: 10, + }, + }, + } + + msgBus := bus.NewMessageBus() + provider := &failFirstMockProvider{ + failures: 1, + failError: fmt.Errorf("API error: status: 500 temporary upstream failure"), + successResp: "Recovered after transient provider failure", + } + + al := NewAgentLoop(cfg, msgBus, provider) + + response, err := al.ProcessDirectWithChannel( + context.Background(), + "retry this request", + "test-session-transient", + "cli", + "direct", + ) + if err != nil { + t.Fatalf("Expected success after transient retry, got error: %v", err) + } + + if response != "Recovered after transient provider failure" { + t.Fatalf("response = %q, want %q", response, "Recovered after transient provider failure") + } + if provider.currentCall != 2 { + t.Fatalf("expected 2 calls (1 fail + 1 success), got %d", provider.currentCall) + } +} + func TestResolveMediaRefs_ResolvesToBase64(t *testing.T) { store := media.NewFileMediaStore() dir := t.TempDir()