From 09b33e65d92f5fb5b907e49c3d27584615cf2b83 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 4 Sep 2025 16:10:01 +0300 Subject: tests: add negative SSE test, table-driven refactors, and use shared fixtures across tests; update REPORT.md progress --- internal/llm/openai_sse_negative_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 internal/llm/openai_sse_negative_test.go (limited to 'internal/llm') diff --git a/internal/llm/openai_sse_negative_test.go b/internal/llm/openai_sse_negative_test.go new file mode 100644 index 0000000..22b938c --- /dev/null +++ b/internal/llm/openai_sse_negative_test.go @@ -0,0 +1,27 @@ +package llm + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" +) + +func TestOpenAI_ChatStream_SSE_MalformedChunk(t *testing.T) { + // Malformed JSON chunk should be skipped; no onDelta calls; no error. + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/event-stream") + io.WriteString(w, "data: {not json}\n\n") + io.WriteString(w, "data: [DONE]\n") + })) + defer srv.Close() + c := newOpenAI(srv.URL, "g", "KEY", f64p(0.2)).(openAIClient) + c.httpClient = srv.Client() + var got string + if err := c.ChatStream(context.Background(), []Message{{Role: "user", Content: "hi"}}, func(s string){ got += s }); err != nil { + t.Fatalf("unexpected error for malformed chunk: %v", err) + } + if got != "" { t.Fatalf("expected no deltas for malformed chunk, got %q", got) } +} + -- cgit v1.2.3