diff options
Diffstat (limited to 'git-codereview/hook_test.go')
| -rw-r--r-- | git-codereview/hook_test.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/git-codereview/hook_test.go b/git-codereview/hook_test.go index d4ffbc4..8ffe234 100644 --- a/git-codereview/hook_test.go +++ b/git-codereview/hook_test.go @@ -475,6 +475,8 @@ func TestHooksOverwriteOldCommitMsg(t *testing.T) { gt := newGitTest(t) defer gt.done() + gt.removeStubHooks() + mkdir(t, gt.client+"/.git/hooks") write(t, gt.client+"/.git/hooks/commit-msg", oldCommitMsgHook, 0755) testMain(t, "hooks") // install hooks data, err := ioutil.ReadFile(gt.client + "/.git/hooks/commit-msg") @@ -489,6 +491,26 @@ func TestHooksOverwriteOldCommitMsg(t *testing.T) { } } +// Test that 'git-codereview hooks' reports when it fails to write hooks. +// See go.dev/issue/16777. +func TestHooksReportConflictingContent(t *testing.T) { + gt := newGitTest(t) + defer gt.done() + + const pretendUserHook = "#!/bin/sh\necho 'pretend to be a custom hook'\nexit 1\n" + for _, h := range hookFiles { + write(t, gt.client+"/.git/hooks/"+h, pretendUserHook, 0755) + } + testMainDied(t, "hooks") // install hooks + testPrintedStderr(t, "Hooks files", "already exist.", "To install git-codereview hooks, delete these files and re-run 'git-codereview hooks'.") + for _, h := range hookFiles { + data := read(t, gt.client+"/.git/hooks/"+h) + if string(data) != pretendUserHook { + t.Errorf("existing hook file %s was unexpectedly modified", h) + } + } +} + func testInstallHook(t *testing.T, gt *gitTest) (restore func()) { trun(t, gt.pwd, "go", "build", "-o", gt.client+"/git-codereview") path := os.Getenv("PATH") |
