Files
simplegit/common/hooks_test.go
T
2026-07-29 06:51:43 -04:00

48 lines
1.2 KiB
Go

package common
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestEnsureHookTemplatePassesTypeAndRepo(t *testing.T) {
root := t.TempDir()
dir, err := EnsureHookTemplate(root)
if err != nil {
t.Fatal(err)
}
body, err := os.ReadFile(filepath.Join(dir, "hooks", "post-receive"))
if err != nil {
t.Fatal(err)
}
text := string(body)
for _, want := range []string{`post-receive "$repo" "$@"`, `repo=${repo_dir#"$SIMPLEGIT_REPO_ROOT"/}`, `repo=${repo%.git}`} {
if !strings.Contains(text, want) {
t.Errorf("generated hook missing %q:\n%s", want, text)
}
}
}
func TestEnsureHookTemplateRefreshesExistingRepos(t *testing.T) {
root := t.TempDir()
hook := filepath.Join(root, "repos", "alice", "demo.git", "hooks", "post-receive")
if err := os.MkdirAll(filepath.Dir(hook), 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(hook, []byte("old"), 0o755); err != nil {
t.Fatal(err)
}
if _, err := EnsureHookTemplate(root); err != nil {
t.Fatal(err)
}
body, err := os.ReadFile(hook)
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(body), `post-receive "$repo"`) {
t.Fatalf("existing hook was not refreshed: %s", body)
}
}