package main import ( "slices" "testing" "github.com/yetone/magpie/internal/catalog" "github.com/yetone/magpie/internal/provider" "github.com/yetone/magpie/internal/settings" ) // magpie model name and --reset keep and drop the user's name for a // provider's model, a name of several words included. func TestModelNameCmd(t *testing.T) { groupsHome(t) catalog.Changed = nil // no agent's files are rewritten here if err := modelCmd([]string{"name", "a/m", "My", "Model"}); err != nil { t.Fatal(err) } if n, ok := provider.ModelName("a", "m"); !ok || n != "My Model" { t.Fatal(n, ok) } if err := modelCmd([]string{"name", "a/m"}); err != nil { t.Fatal(err) } if err := modelCmd([]string{"names"}); err != nil { t.Fatal(err) } if err := modelCmd([]string{"name", "a/m", "--reset"}); err != nil { t.Fatal(err) } if _, ok := provider.ModelName("a", "m"); ok { t.Fatal("still named") } if err := modelCmd([]string{"name", "m", "x"}); err == nil { t.Fatal("named a model without its provider") } // a model whose reasoning levels aren't known can be given some if err := modelCmd([]string{"efforts", "a/m", "low,high"}); err != nil { t.Fatal(err) } if es := settings.Load().ModelEfforts["a/m"]; !slices.Equal(es, []string{"low", "high"}) { t.Fatal(settings.Load().ModelEfforts) } if err := modelCmd([]string{"efforts", "a/m", "--reset"}); err != nil { t.Fatal(err) } if es := settings.Load().ModelEfforts; len(es) != 0 { t.Fatal(es) } }