119 lines
2.8 KiB
Go
119 lines
2.8 KiB
Go
package status
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"iop/packages/config"
|
|
)
|
|
|
|
func TestNewChecker_CodexUsesProfileCommand(t *testing.T) {
|
|
checker, err := NewChecker("codex", config.CLIProfileConf{
|
|
Command: "/tmp/mycodex",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewChecker failed: %v", err)
|
|
}
|
|
|
|
codex, ok := checker.(*CodexChecker)
|
|
if !ok {
|
|
t.Fatalf("expected *CodexChecker, got %T", checker)
|
|
}
|
|
|
|
if codex.command != "/tmp/mycodex" {
|
|
t.Errorf("expected command /tmp/mycodex, got %q", codex.command)
|
|
}
|
|
}
|
|
|
|
func TestNewChecker_FallbackToCmdBase(t *testing.T) {
|
|
checker, err := NewChecker("some-other", config.CLIProfileConf{
|
|
Command: "/usr/bin/codex",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewChecker failed: %v", err)
|
|
}
|
|
|
|
if _, ok := checker.(*CodexChecker); !ok {
|
|
t.Errorf("expected *CodexChecker for command ending in codex, got %T", checker)
|
|
}
|
|
}
|
|
|
|
func TestUnsupportedAgentReturnsError(t *testing.T) {
|
|
_, err := CheckUsage(context.Background(), "unknown", config.CLIProfileConf{Command: "unknown"})
|
|
if err == nil || !strings.Contains(err.Error(), "status check not supported") {
|
|
t.Errorf("expected not supported error, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestNewChecker_ClaudeUsesProfileCommand(t *testing.T) {
|
|
checker, err := NewChecker("claude", config.CLIProfileConf{
|
|
Command: "/tmp/myclaude",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewChecker failed: %v", err)
|
|
}
|
|
|
|
claude, ok := checker.(*ClaudeChecker)
|
|
if !ok {
|
|
t.Fatalf("expected *ClaudeChecker, got %T", checker)
|
|
}
|
|
|
|
if claude.command != "/tmp/myclaude" {
|
|
t.Errorf("expected command /tmp/myclaude, got %q", claude.command)
|
|
}
|
|
}
|
|
|
|
func TestNewChecker_GeminiUsesProfileCommand(t *testing.T) {
|
|
checker, err := NewChecker("gemini", config.CLIProfileConf{
|
|
Command: "/tmp/mygemini",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewChecker failed: %v", err)
|
|
}
|
|
|
|
gemini, ok := checker.(*GeminiChecker)
|
|
if !ok {
|
|
t.Fatalf("expected *GeminiChecker, got %T", checker)
|
|
}
|
|
|
|
if gemini.command != "/tmp/mygemini" {
|
|
t.Errorf("expected command /tmp/mygemini, got %q", gemini.command)
|
|
}
|
|
}
|
|
|
|
func TestNewChecker_GeminiEmptyCommandDefaultsToGemini(t *testing.T) {
|
|
checker, err := NewChecker("gemini", config.CLIProfileConf{
|
|
Command: "",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewChecker failed: %v", err)
|
|
}
|
|
|
|
gemini, ok := checker.(*GeminiChecker)
|
|
if !ok {
|
|
t.Fatalf("expected *GeminiChecker, got %T", checker)
|
|
}
|
|
|
|
if gemini.command != "gemini" {
|
|
t.Errorf("expected default command gemini, got %q", gemini.command)
|
|
}
|
|
}
|
|
|
|
func TestNewChecker_ClaudeEmptyCommandDefaultsToClaude(t *testing.T) {
|
|
checker, err := NewChecker("claude", config.CLIProfileConf{
|
|
Command: "",
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("NewChecker failed: %v", err)
|
|
}
|
|
|
|
claude, ok := checker.(*ClaudeChecker)
|
|
if !ok {
|
|
t.Fatalf("expected *ClaudeChecker, got %T", checker)
|
|
}
|
|
|
|
if claude.command != "claude" {
|
|
t.Errorf("expected default command claude, got %q", claude.command)
|
|
}
|
|
}
|