fix: создавать каталог worktree в prepareRepos (decider: не могу сменить папку на ./worktrees)
All checks were successful
CI / test (push) Successful in 44s
CI / build-and-package (amd64, linux) (push) Successful in 43s
CI / build-and-package (amd64, windows) (push) Successful in 42s

This commit is contained in:
Hermes
2026-08-16 22:04:16 +05:00
parent f0794300b5
commit e055d1937c
2 changed files with 30 additions and 0 deletions

View File

@@ -464,6 +464,31 @@ func TestPrepareRepos(t *testing.T) {
}
}
// TestPrepareRepos_CreatesWorktreeDir проверяет, что prepareRepos создаёт сам
// каталог worktree на свежей машине (иначе git clone не может создать родителя,
// а decider падает с «не могу сменить папку на ./worktrees»).
func TestPrepareRepos_CreatesWorktreeDir(t *testing.T) {
// worktree ещё НЕ существует (родитель TempDir есть, сам каталог — нет).
base := t.TempDir()
wt := filepath.Join(base, "nested", "worktrees")
if _, err := os.Stat(wt); !os.IsNotExist(err) {
t.Fatalf("предусловие: %s должен отсутствовать, %v", wt, err)
}
w := &Worker{Worktree: wt, GitBaseURL: "http://gitea.hal9000.home"}
// Пустой список репо → prepareRepos всё равно создаёт каталог worktree.
if err := w.prepareRepos(context.Background(), nil); err != nil {
t.Fatalf("prepareRepos создал каталог: %v", err)
}
st, err := os.Stat(wt)
if err != nil {
t.Fatalf("worktree должен существовать после prepareRepos: %v", err)
}
if !st.IsDir() {
t.Fatalf("worktree не директория: %v", st.Mode())
}
}
func TestPrepareReposNonGitDir(t *testing.T) {
wt := t.TempDir()
w := &Worker{Worktree: wt}