package config_test import ( "fmt" "log" "os" "strings" "testing" "rickub.com/bots-garden/ori/internal/config" ) func TestFromArgsDefaults(t *testing.T) { cfg, err := config.FromArgs(nil) if err != nil { t.Fatalf("FromArgs(nil) returned an error: %v", err) } if cfg.Addr != ":8888" { t.Errorf("default Addr = %q, want %q", cfg.Addr, ":8888") } wd, _ := os.Getwd() if cfg.Cwd != wd { t.Errorf("default Cwd = %q, want current directory %q", cfg.Cwd, wd) } want := strings.Fields(config.DefaultAgentCommand) if strings.Join(cfg.AgentCommand, " ") != strings.Join(want, " ") { t.Errorf("default AgentCommand = %v, want %v", cfg.AgentCommand, want) } } func TestFromArgsOverrides(t *testing.T) { dir := t.TempDir() cfg, err := config.FromArgs([]string{"--addr", ":9000", "--cwd", dir, "--agent-cmd", "gemini --experimental-acp"}) if err != nil { t.Fatalf("FromArgs returned an error: %v", err) } if cfg.Addr != ":9000" { t.Errorf("Addr = %q, want %q", cfg.Addr, ":9000") } if cfg.Cwd != dir { t.Errorf("Cwd = %q, want %q", cfg.Cwd, dir) } if len(cfg.AgentCommand) != 2 || cfg.AgentCommand[0] != "gemini" || cfg.AgentCommand[1] != "--experimental-acp" { t.Errorf("AgentCommand = %v, want [gemini --experimental-acp]", cfg.AgentCommand) } } func TestFromArgsRejectsEmptyAgentCommand(t *testing.T) { if _, err := config.FromArgs([]string{"--agent-cmd", " "}); err == nil { t.Fatal("FromArgs accepted an empty --agent-cmd, want an error") } } func TestFromArgsRejectsMissingCwd(t *testing.T) { if _, err := config.FromArgs([]string{"--cwd", "/does/not/exist"}); err == nil { t.Fatal("FromArgs accepted a non-existent --cwd, want an error") } } func TestFromArgsRejectsFileAsCwd(t *testing.T) { file := t.TempDir() + "/plain-file" if err := os.WriteFile(file, []byte("x"), 0o644); err != nil { t.Fatal(err) } if _, err := config.FromArgs([]string{"--cwd", file}); err == nil { t.Fatal("FromArgs accepted a plain file as --cwd, want an error") } } func TestFromArgsRejectsUnknownFlag(t *testing.T) { if _, err := config.FromArgs([]string{"--nope"}); err == nil { t.Fatal("FromArgs accepted an unknown flag, want an error") } } func ExampleFromArgs() { cfg, err := config.FromArgs([]string{"--addr", ":9000"}) if err != nil { log.Fatal(err) } fmt.Println(cfg.Addr) // Output: :9000 }