Skip to content

Commit 9afa5af

Browse files
committed
Merge branch 'master' into multiproj
2 parents 8e94803 + 3e9696c commit 9afa5af

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

scm/git.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,16 @@ func SetHooks(hooks map[string]string, wd ...string) error {
528528
}
529529
}
530530
fp := filepath.Join(p, ".git", "hooks", hook)
531+
hooksDir := filepath.Join(p, ".git", "hooks")
531532

532533
var output string
534+
535+
if _, err := os.Stat(hooksDir); os.IsNotExist(err) {
536+
if err := os.MkdirAll(hooksDir, 0700); err != nil {
537+
return err
538+
}
539+
}
540+
533541
if _, err := os.Stat(fp); !os.IsNotExist(err) {
534542
b, err := ioutil.ReadFile(fp)
535543
if err != nil {

scm/git_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,4 +375,24 @@ func TestSetGitHooks(t *testing.T) {
375375
if !strings.Contains(output, hooks["post-commit"]) {
376376
t.Errorf("SetHooks(hooks) expected post-commit to contain %s, got %s", hooks["post-commit"], output)
377377
}
378+
379+
// test if hooks folder doesn't exist
380+
err = os.RemoveAll(path.Join(repoPath, ".git", "hooks"))
381+
if err != nil {
382+
t.Fatalf("SetHooks(hooks) expect error nil, got %s", err)
383+
}
384+
385+
err = SetHooks(hooks, repoPath)
386+
if err != nil {
387+
t.Errorf("SetHooks(hooks) expect error nil, got %s", err)
388+
}
389+
b, err = ioutil.ReadFile(path.Join(repoPath, ".git", "hooks", "post-commit"))
390+
if err != nil {
391+
t.Fatalf("SetHooks(hooks) expect error nil, got %s", err)
392+
}
393+
output = string(b)
394+
if !strings.Contains(output, hooks["post-commit"]) {
395+
t.Errorf("SetHooks(hooks) expected post-commit to contain %s, got %s", hooks["post-commit"], output)
396+
}
397+
378398
}

0 commit comments

Comments
 (0)