diff options
Diffstat (limited to 'internal/appconfig')
| -rw-r--r-- | internal/appconfig/config_alias_test.go | 36 | ||||
| -rw-r--r-- | internal/appconfig/config_env_model_test.go | 37 |
2 files changed, 73 insertions, 0 deletions
diff --git a/internal/appconfig/config_alias_test.go b/internal/appconfig/config_alias_test.go new file mode 100644 index 0000000..6cc5bda --- /dev/null +++ b/internal/appconfig/config_alias_test.go @@ -0,0 +1,36 @@ +package appconfig + +import ( + "log" + "os" + "path/filepath" + "testing" +) + +func TestOpenAIPresets_AliasResolution(t *testing.T) { + dir := t.TempDir() + t.Setenv("XDG_CONFIG_HOME", dir) + cfgDir := filepath.Join(dir, "hexai") + if err := os.MkdirAll(cfgDir, 0o755); err != nil { + t.Fatalf("mkdir: %v", err) + } + toml := ` +[provider] +name = "openai" + +[openai] +model = "codex" + +[openai.presets] +codex = "gpt-5-codex" +` + path := filepath.Join(cfgDir, "config.toml") + if err := os.WriteFile(path, []byte(toml), 0o644); err != nil { + t.Fatalf("write: %v", err) + } + cfg := Load(log.New(os.Stderr, "test ", 0)) + if cfg.OpenAIModel != "gpt-5-codex" { + t.Fatalf("expected alias to resolve to gpt-5-codex, got %q", cfg.OpenAIModel) + } +} + diff --git a/internal/appconfig/config_env_model_test.go b/internal/appconfig/config_env_model_test.go new file mode 100644 index 0000000..2db2bb5 --- /dev/null +++ b/internal/appconfig/config_env_model_test.go @@ -0,0 +1,37 @@ +package appconfig + +import ( + "log" + "os" + "testing" +) + +// Test that HEXAI_MODEL applies to provider model fields and that +// provider-specific envs take precedence when both are set. +func TestEnv_GenericModelOverrideAndPrecedence(t *testing.T) { + t.Setenv("HEXAI_MODEL", "gpt-5-codex") + t.Setenv("HEXAI_PROVIDER", "openai") + // No provider-specific env set yet: HEXAI_MODEL should flow into OpenAIModel + cfg := Load(log.New(os.Stderr, "test ", 0)) + if cfg.OpenAIModel != "gpt-5-codex" { + t.Fatalf("expected OpenAIModel=gpt-5-codex via HEXAI_MODEL, got %q", cfg.OpenAIModel) + } + + // Now set a provider-specific model; it should win over HEXAI_MODEL + t.Setenv("HEXAI_OPENAI_MODEL", "gpt-5-thinking") + cfg2 := Load(log.New(os.Stderr, "test ", 0)) + if cfg2.OpenAIModel != "gpt-5-thinking" { + t.Fatalf("expected OpenAIModel from HEXAI_OPENAI_MODEL to win, got %q", cfg2.OpenAIModel) + } +} + +// Test that HEXAI_MODEL_FORCE overrides provider-specific envs (used by CLI --model). +func TestEnv_ModelForce_OverridesProviderSpecific(t *testing.T) { + t.Setenv("HEXAI_OPENAI_MODEL", "gpt-5-main") + t.Setenv("HEXAI_MODEL_FORCE", "gpt-5-codex") + t.Setenv("HEXAI_PROVIDER", "openai") + cfg := Load(log.New(os.Stderr, "test ", 0)) + if cfg.OpenAIModel != "gpt-5-codex" { + t.Fatalf("expected OpenAIModel forced to gpt-5-codex, got %q", cfg.OpenAIModel) + } +} |
