summaryrefslogtreecommitdiff
path: root/internal/appconfig/config_env_model_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-09-19 22:56:10 +0300
committerPaul Buetow <paul@buetow.org>2025-09-19 22:56:10 +0300
commit1065d7a991d3b5c103bcc986a84867db28cb4720 (patch)
tree00824c2b7b7b3016f235205bed9483b638340de6 /internal/appconfig/config_env_model_test.go
parent6feda08653a80a7609df2e8b80e98ede15f86a61 (diff)
Diffstat (limited to 'internal/appconfig/config_env_model_test.go')
-rw-r--r--internal/appconfig/config_env_model_test.go37
1 files changed, 37 insertions, 0 deletions
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)
+ }
+}