summaryrefslogtreecommitdiff
path: root/internal/hexaicli/run_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/hexaicli/run_test.go')
-rw-r--r--internal/hexaicli/run_test.go64
1 files changed, 62 insertions, 2 deletions
diff --git a/internal/hexaicli/run_test.go b/internal/hexaicli/run_test.go
index 34a5c51..315d016 100644
--- a/internal/hexaicli/run_test.go
+++ b/internal/hexaicli/run_test.go
@@ -154,8 +154,68 @@ model = "gpt-x"
func TestPrintProviderInfo(t *testing.T) {
var b bytes.Buffer
printProviderInfo(&b, &fakeClient{name: "x", model: "y"}, "y")
- if !strings.Contains(b.String(), "provider=x model=y") {
- t.Fatalf("missing provider line: %q", b.String())
+ if !strings.Contains(b.String(), "x:y") || !strings.Contains(b.String(), "─") {
+ t.Fatalf("missing provider header: %q", b.String())
+ }
+ if strings.Contains(b.String(), "provider=") {
+ t.Fatalf("unexpected legacy provider line: %q", b.String())
+ }
+}
+
+func TestRun_SingleProviderHeaderUsesStderr(t *testing.T) {
+ oldNew := newClientFromApp
+ defer func() { newClientFromApp = oldNew }()
+ newClientFromApp = func(_ appconfig.App) (llm.Client, error) {
+ return &fakeClient{name: "openai", model: "gpt-4.1", resp: "OUT"}, nil
+ }
+
+ restore, f := setStdin(t, "hello")
+ defer restore()
+
+ var stdout, stderr bytes.Buffer
+ if err := Run(context.Background(), nil, f, &stdout, &stderr); err != nil {
+ t.Fatalf("Run: %v", err)
+ }
+ if got := stdout.String(); got != "OUT" {
+ t.Fatalf("stdout = %q, want %q", got, "OUT")
+ }
+ if !strings.Contains(stderr.String(), "openai:gpt-4.1") || !strings.Contains(stderr.String(), "─") {
+ t.Fatalf("stderr missing provider header: %q", stderr.String())
+ }
+ if strings.Contains(stdout.String(), "openai:gpt-4.1") || strings.Contains(stdout.String(), "─") {
+ t.Fatalf("stdout should not contain provider header: %q", stdout.String())
+ }
+}
+
+func TestExecuteCLIJobs_MultiProviderHeaderUsesStderr(t *testing.T) {
+ jobs := []cliJob{
+ {
+ index: 0,
+ provider: "openai",
+ client: &fakeClient{name: "openai", model: "gpt-4.1", resp: "LEFT"},
+ req: requestArgs{model: "gpt-4.1"},
+ },
+ {
+ index: 1,
+ provider: "anthropic",
+ client: &fakeClient{name: "anthropic", model: "claude", resp: "RIGHT"},
+ req: requestArgs{model: "claude"},
+ },
+ }
+
+ var stdout, stderr bytes.Buffer
+ results, printer := executeCLIJobs(context.Background(), jobs, buildMessages("hello"), "hello", &stdout, &stderr, false)
+ if printer == nil {
+ t.Fatalf("expected column printer for multi-provider run")
+ }
+ if len(results) != 2 || results[0] == nil || results[1] == nil {
+ t.Fatalf("expected results for both jobs, got %#v", results)
+ }
+ if !strings.Contains(stderr.String(), "openai:gpt-4.1") || !strings.Contains(stderr.String(), "anthropic:claude") {
+ t.Fatalf("stderr missing multi-provider header: %q", stderr.String())
+ }
+ if strings.Contains(stdout.String(), "openai:gpt-4.1") || strings.Contains(stdout.String(), "anthropic:claude") {
+ t.Fatalf("stdout should not contain provider header: %q", stdout.String())
}
}