mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
100 lines
2.8 KiB
Go
100 lines
2.8 KiB
Go
package providers
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/sipeed/picoclaw/pkg/config"
|
|
)
|
|
|
|
func testProviderWorkspace(t *testing.T, provider any) string {
|
|
t.Helper()
|
|
|
|
v := reflect.ValueOf(provider)
|
|
if v.Kind() != reflect.Ptr || v.IsNil() {
|
|
t.Fatalf("provider = %T, want non-nil pointer", provider)
|
|
}
|
|
|
|
field := v.Elem().FieldByName("workspace")
|
|
if !field.IsValid() || field.Kind() != reflect.String {
|
|
t.Fatalf("provider %T does not expose workspace field", provider)
|
|
}
|
|
|
|
return field.String()
|
|
}
|
|
|
|
func TestCreateProvider_ClaudeCli(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{ModelName: "claude-sonnet-4.6", Model: "claude-cli/claude-sonnet-4.6", Workspace: "/test/ws"},
|
|
}
|
|
cfg.Agents.Defaults.ModelName = "claude-sonnet-4.6"
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider(claude-cli) error = %v", err)
|
|
}
|
|
|
|
cliProvider, ok := provider.(*ClaudeCliProvider)
|
|
if !ok {
|
|
t.Fatalf("CreateProvider(claude-cli) returned %T, want *ClaudeCliProvider", provider)
|
|
}
|
|
if got := testProviderWorkspace(t, cliProvider); got != "/test/ws" {
|
|
t.Errorf("workspace = %q, want %q", got, "/test/ws")
|
|
}
|
|
}
|
|
|
|
func TestCreateProvider_ClaudeCode(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{ModelName: "claude-code", Model: "claude-cli/claude-code"},
|
|
}
|
|
cfg.Agents.Defaults.ModelName = "claude-code"
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider(claude-code) error = %v", err)
|
|
}
|
|
if _, ok := provider.(*ClaudeCliProvider); !ok {
|
|
t.Fatalf("CreateProvider(claude-code) returned %T, want *ClaudeCliProvider", provider)
|
|
}
|
|
}
|
|
|
|
func TestCreateProvider_ClaudeCodec(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{ModelName: "claudecode", Model: "claude-cli/claudecode"},
|
|
}
|
|
cfg.Agents.Defaults.ModelName = "claudecode"
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider(claudecode) error = %v", err)
|
|
}
|
|
if _, ok := provider.(*ClaudeCliProvider); !ok {
|
|
t.Fatalf("CreateProvider(claudecode) returned %T, want *ClaudeCliProvider", provider)
|
|
}
|
|
}
|
|
|
|
func TestCreateProvider_ClaudeCliDefaultWorkspace(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{ModelName: "claude-cli", Model: "claude-cli/claude-sonnet"},
|
|
}
|
|
cfg.Agents.Defaults.ModelName = "claude-cli"
|
|
cfg.Agents.Defaults.Workspace = ""
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider error = %v", err)
|
|
}
|
|
|
|
cliProvider, ok := provider.(*ClaudeCliProvider)
|
|
if !ok {
|
|
t.Fatalf("returned %T, want *ClaudeCliProvider", provider)
|
|
}
|
|
if got := testProviderWorkspace(t, cliProvider); got != "." {
|
|
t.Errorf("workspace = %q, want %q (default)", got, ".")
|
|
}
|
|
}
|