diff --git a/cmd/bd/hooks_test.go b/cmd/bd/hooks_test.go index 67fd0a87..e3f30ee8 100644 --- a/cmd/bd/hooks_test.go +++ b/cmd/bd/hooks_test.go @@ -43,7 +43,11 @@ func TestInstallHooks(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git", "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + gitDir := filepath.Join(gitDirPath, "hooks") // Get embedded hooks hooks, err := getEmbeddedHooks() @@ -90,7 +94,16 @@ func TestInstallHooksBackup(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git", "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + gitDir := filepath.Join(gitDirPath, "hooks") + + // Ensure hooks directory exists + if err := os.MkdirAll(gitDir, 0750); err != nil { + t.Fatalf("Failed to create hooks directory: %v", err) + } // Create an existing hook existingHook := filepath.Join(gitDir, "pre-commit") @@ -138,7 +151,16 @@ func TestInstallHooksForce(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git", "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + gitDir := filepath.Join(gitDirPath, "hooks") + + // Ensure hooks directory exists + if err := os.MkdirAll(gitDir, 0750); err != nil { + t.Fatalf("Failed to create hooks directory: %v", err) + } // Create an existing hook existingHook := filepath.Join(gitDir, "pre-commit") @@ -176,7 +198,11 @@ func TestUninstallHooks(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git", "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + gitDir := filepath.Join(gitDirPath, "hooks") // Get embedded hooks and install them hooks, err := getEmbeddedHooks() @@ -294,7 +320,11 @@ func TestInstallHooksShared(t *testing.T) { } // Verify hooks were NOT installed to .git/hooks/ - standardHooksDir := filepath.Join(".git", "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + standardHooksDir := filepath.Join(gitDirPath, "hooks") for hookName := range hooks { hookPath := filepath.Join(standardHooksDir, hookName) if _, err := os.Stat(hookPath); !os.IsNotExist(err) { diff --git a/cmd/bd/init_hooks_test.go b/cmd/bd/init_hooks_test.go index d150496e..96dcf378 100644 --- a/cmd/bd/init_hooks_test.go +++ b/cmd/bd/init_hooks_test.go @@ -18,8 +18,11 @@ func TestDetectExistingHooks(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git") - hooksDir := filepath.Join(gitDir, "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + hooksDir := filepath.Join(gitDirPath, "hooks") tests := []struct { name string @@ -109,8 +112,11 @@ func TestInstallGitHooks_NoExistingHooks(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git") - hooksDir := filepath.Join(gitDir, "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + hooksDir := filepath.Join(gitDirPath, "hooks") // Note: Can't fully test interactive prompt in automated tests // This test verifies the logic works when no existing hooks present @@ -148,8 +154,16 @@ func TestInstallGitHooks_ExistingHookBackup(t *testing.T) { t.Skipf("Skipping test: git init failed: %v", err) } - gitDir := filepath.Join(tmpDir, ".git") - hooksDir := filepath.Join(gitDir, "hooks") + gitDirPath, err := getGitDir() + if err != nil { + t.Fatalf("getGitDir() failed: %v", err) + } + hooksDir := filepath.Join(gitDirPath, "hooks") + + // Ensure hooks directory exists + if err := os.MkdirAll(hooksDir, 0750); err != nil { + t.Fatalf("Failed to create hooks directory: %v", err) + } // Create an existing pre-commit hook preCommitPath := filepath.Join(hooksDir, "pre-commit")