From a45b3e0986dfb87e2a5ef03a6e7ff31b56cff17c Mon Sep 17 00:00:00 2001 From: yetone Date: Mon, 5 Oct 2026 17:38:00 +0800 Subject: [PATCH] =?UTF-8?q?provider:=20TestCloudflareDecideModelsTested's?= =?UTF-8?q?=20server=20keeps=20what=20it=20was=20asked=20under=20a=20lock?= =?UTF-8?q?=20=E2=80=94=20Workers=20AI's=20Jev=20and=20Clef=20are=20asked?= =?UTF-8?q?=20at=20once,=20and=20the=20test=20server's=20handler=20wrote?= =?UTF-8?q?=20one=20map=20from=20both=20requests,=20which=20failed=20the?= =?UTF-8?q?=20provider=20package=20now=20and=20then=20(concurrent=20map=20?= =?UTF-8?q?writes)=20while=20the=20full=20suite=20ran.=20go=20test=20-race?= =?UTF-8?q?=20-count=3D5=20-run=20TestCloudflareDecideModelsTested=20and?= =?UTF-8?q?=20go=20test=20-tags=20nogui=20./internal/provider/=20under=20a?= =?UTF-8?q?=20temp=20HOME=20pass;=20go=20vet=20passes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/provider/decide_cloudflare_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/provider/decide_cloudflare_test.go b/internal/provider/decide_cloudflare_test.go index 939b8b43..d7261e28 100644 --- a/internal/provider/decide_cloudflare_test.go +++ b/internal/provider/decide_cloudflare_test.go @@ -7,6 +7,7 @@ import ( "net/http" "net/http/httptest" "path/filepath" + "sync" "testing" ) @@ -21,12 +22,15 @@ func TestCloudflareDecideModelsTested(t *testing.T) { t.Setenv("USERPROFILE", h) t.Setenv("XDG_CONFIG_HOME", filepath.Join(h, ".config")) t.Setenv("XDG_CACHE_HOME", filepath.Join(h, ".cache")) + var mu sync.Mutex asked := map[string]map[string]any{} srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var q map[string]any b, _ := io.ReadAll(r.Body) json.Unmarshal(b, &q) + mu.Lock() asked[r.URL.Path] = q + mu.Unlock() if r.Header.Get("Authorization") != "Bearer k" { w.WriteHeader(http.StatusUnauthorized) return @@ -48,11 +52,13 @@ func TestCloudflareDecideModelsTested(t *testing.T) { t.Fatalf("%s: %s", r.Model, r.Error) } } + mu.Lock() jev := asked["/client/v4/accounts/acc7/ai/run"] if in, _ := jev["input"].(map[string]any); jev["model"] != CloudflareJev || in == nil || in["questions"] == nil || in["model"] != nil { t.Errorf("Jev was asked %v", jev) } clef := asked["/client/v4/accounts/acc7/ai/run/@cf/cloudflare/clef"] + mu.Unlock() if clef["model"] != "clef" || clef["questions"] == nil || clef["input"] != nil { t.Errorf("Clef was asked %v", clef) }