fix(opencode): serve передаёт OPENCODE_CONFIG — детерминированный выбор модели
Some checks failed
CI / test (push) Failing after 1m36s
CI / build-and-package (amd64, linux) (push) Failing after 1m16s
CI / build-and-package (amd64, windows) (push) Successful in 34s

This commit is contained in:
ki.sagidullin
2026-08-23 20:27:24 +05:00
parent 3c51ffee4e
commit 88b455203f
2 changed files with 61 additions and 0 deletions

View File

@@ -198,4 +198,38 @@ func atoiOrZero(s string) int {
n = n*10 + int(c-'0')
}
return n
}
func TestServeCmd_SetsOpenCodeConfig(t *testing.T) {
// serveCmd должен всегда передавать OPENCODE_CONFIG: без него serve может
// не подхватить модель/провайдеров из глобального конфига.
s := &Server{}
s.defaults()
cmd := s.serveCmd(context.Background())
if cmd.Env == nil {
t.Fatal("serveCmd: Env не задан")
}
prefix := "OPENCODE_CONFIG="
path := ""
for _, kv := range cmd.Env {
if strings.HasPrefix(kv, prefix) {
path = strings.TrimPrefix(kv, prefix)
break
}
}
if path == "" {
t.Fatal("serveCmd: OPENCODE_CONFIG не выставлен")
}
if want := s.ConfigPath; path != want {
t.Errorf("OPENCODE_CONFIG = %q, want %q", path, want)
}
}
func TestServerCmd_CustomOpenCodeConfig(t *testing.T) {
// явно заданный путь переопределяет дефолтный
s := &Server{ConfigPath: `C:\custom\opencode.jsonc`}
s.defaults()
if s.ConfigPath != `C:\custom\opencode.jsonc` {
t.Errorf("ConfigPath = %q, want explicit", s.ConfigPath)
}
}