From 0ac2d186e84f77d73d924e2c0ce975a17c3a8078 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 28 Sep 2025 00:20:05 +0300 Subject: Improve multi-provider completion streaming and CLI selector flags --- internal/hexaicli/run_model_override_test.go | 54 +++++++++++++++------------- 1 file changed, 30 insertions(+), 24 deletions(-) (limited to 'internal/hexaicli/run_model_override_test.go') diff --git a/internal/hexaicli/run_model_override_test.go b/internal/hexaicli/run_model_override_test.go index 6394bd1..b32b172 100644 --- a/internal/hexaicli/run_model_override_test.go +++ b/internal/hexaicli/run_model_override_test.go @@ -1,39 +1,45 @@ package hexaicli import ( - "bytes" - "context" - "strings" - "testing" + "bytes" + "context" + "strings" + "testing" - "codeberg.org/snonux/hexai/internal/appconfig" - "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/appconfig" + "codeberg.org/snonux/hexai/internal/llm" ) type fakeClientModelEnv struct{ name, model string } -func (f fakeClientModelEnv) Chat(_ context.Context, _ []llm.Message, _ ...llm.RequestOption) (string, error) { return "ok", nil } + +func (f fakeClientModelEnv) Chat(_ context.Context, _ []llm.Message, _ ...llm.RequestOption) (string, error) { + return "ok", nil +} func (f fakeClientModelEnv) Name() string { return f.name } func (f fakeClientModelEnv) DefaultModel() string { return f.model } // Ensure that HEXAI_MODEL overrides config for CLI runs. func TestRun_ModelEnvOverride_FlowsIntoClient(t *testing.T) { - t.Setenv("HEXAI_MODEL", "gpt-5-codex") - t.Setenv("HEXAI_PROVIDER", "openai") - // Replace client constructor to assert model was overridden - oldNew := newClientFromApp - defer func() { newClientFromApp = oldNew }() + t.Setenv("XDG_CONFIG_HOME", t.TempDir()) + t.Setenv("HEXAI_MODEL", "gpt-5-codex") + t.Setenv("HEXAI_PROVIDER", "openai") + // Replace client constructor to assert model was overridden + oldNew := newClientFromApp + defer func() { newClientFromApp = oldNew }() + var seenModel string newClientFromApp = func(cfg appconfig.App) (llm.Client, error) { - if strings.TrimSpace(cfg.OpenAIModel) != "gpt-5-codex" { - t.Fatalf("expected cfg.OpenAIModel=gpt-5-codex, got %q", cfg.OpenAIModel) - } - return fakeClientModelEnv{name: "openai", model: cfg.OpenAIModel}, nil - } + seenModel = strings.TrimSpace(cfg.OpenAIModel) + return fakeClientModelEnv{name: "openai", model: cfg.OpenAIModel}, nil + } - var out, errb bytes.Buffer - if err := Run(context.Background(), []string{"hello"}, strings.NewReader(""), &out, &errb); err != nil { - t.Fatalf("run error: %v", err) - } - if !strings.Contains(errb.String(), "model=gpt-5-codex") { - t.Fatalf("stderr should print effective model, got: %s", errb.String()) - } + var out, errb bytes.Buffer + if err := Run(context.Background(), []string{"hello"}, strings.NewReader(""), &out, &errb); err != nil { + t.Fatalf("run error: %v", err) + } + if seenModel != "gpt-5-codex" { + t.Fatalf("expected cfg.OpenAIModel=gpt-5-codex, got %q", seenModel) + } + if !strings.Contains(errb.String(), "model=gpt-5-codex") { + t.Fatalf("stderr should print effective model, got: %s", errb.String()) + } } -- cgit v1.2.3