fix: создавать каталог worktree при старте app (decider запускается до воркера)
All checks were successful
CI / test (push) Successful in 54s
CI / build-and-package (amd64, linux) (push) Successful in 51s
CI / build-and-package (amd64, windows) (push) Successful in 47s

This commit is contained in:
Hermes
2026-08-16 22:13:36 +05:00
parent e055d1937c
commit 4044c0866f
2 changed files with 46 additions and 0 deletions

View File

@@ -108,6 +108,43 @@ func TestMain(t *testing.T) {
t.Log("main.go exists")
}
// TestNew_WorktreeCreated проверяет, что New создаёт каталог worktree (decider и
// воркер запускают opencode с cwd=worktree — каталог должен существовать заранее).
func TestNew_WorktreeCreated(t *testing.T) {
tmp := t.TempDir()
wt := filepath.Join(tmp, "nested", "worktrees")
configPath := filepath.Join(tmp, "config.yaml")
content := strings.Join([]string{
"telegram:",
" token: \"test:token\"",
" chat_id: \"12345\"",
"paths:",
" db: \"" + filepath.Join(tmp, "test.db") + "\"",
" worktree: \"" + wt + "\"",
"",
}, "\n")
if err := os.WriteFile(configPath, []byte(content), 0o600); err != nil {
t.Fatalf("write config: %v", err)
}
a, err := New(configPath, "dev", "")
if err != nil {
t.Fatalf("New() err = %v", err)
}
defer a.Store.Close()
st, err := os.Stat(wt)
if err != nil {
t.Fatalf("worktree должен существовать после New: %v", err)
}
if !st.IsDir() {
t.Fatalf("worktree не директория: %v", st.Mode())
}
if a.Worker.Worktree != wt {
t.Errorf("Worker.Worktree = %q, want %q", a.Worker.Worktree, wt)
}
t.Logf("worktree создан: %s", wt)
}
// TestNew_UpdateWiring проверяет: 1) update.base_url берётся из update-блока
// (не git.base_url); 2) приоритет токена: вшитый updateToken > update.token.
func TestNew_UpdateWiring(t *testing.T) {