48 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|