Server side (non-trac) commit message enforcement.
[git-central.git] / tests / t2000-server-pre-receive-ticket.sh
1
2 #!/bin/sh
3
4 test_description='server pre-receive ticket enforcer'
5
6 . ./test-lib.sh
7
8 test_expect_success 'setup' '
9         echo This is a test. >a &&
10         git add a &&
11         git commit -m "a" &&
12         git clone ./. server &&
13         rm -fr server/.git/hooks &&
14         git remote add origin ./server &&
15         git config --add branch.master.remote origin &&
16         git config --add branch.master.merge refs/heads/master
17 '
18
19 # setup the pre-receive hook
20 install_server_hook 'pre-receive-ticket' 'pre-receive'
21
22 test_expect_success 'reject with bad message' '
23         echo $test_name >a &&
24         git commit -a -m "foo" &&
25         git push >push.out 2>push.err
26         head=$(git rev-parse HEAD)
27         cat push.err | grep "Commit $head does not reference a ticket"
28 '
29
30 # the last test has a dirty commit message, so ammend it with a good message
31 test_expect_success 'accept with re' '
32         echo $test_name >a &&
33         git commit --amend -m "foo re #3222" &&
34         git push
35 '
36
37 test_expect_success 'accept with re on second line' '
38         echo $test_name >a &&
39         echo "first subject line" >msg
40         echo "second line re #322" >>msg
41         git commit -a -F msg &&
42         git push
43 '
44
45 test_done
46