d45fa39bc36c95c3336326c78136d64801f3c4db
[git-central.git] / tests / t2900-server-update-lock-check.sh
1 #!/bin/sh
2
3 test_description='server update lock check'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         echo "setup" >a &&
9         git add a &&
10         git commit -m "setup" &&
11         git clone ./. server &&
12         rm -fr server/.git/hooks &&
13         git remote add origin ./server &&
14         git config --add branch.master.remote origin &&
15         git config --add branch.master.merge refs/heads/master &&
16         git fetch
17 '
18
19 install_update_hook 'update-lock-check.rb'
20
21 test_expect_success 'locked branch is rejected' '
22         cd server &&
23         git config hooks.update-lock-check.locked master &&
24         cd .. &&
25
26         echo "$test_name" >a &&
27         git commit -a -m "changed" &&
28         ! git push 2>push.err &&
29         cat push.err | grep "Branch master is locked"
30 '
31
32 test_expect_success 'locked branch is rejected with multiple branches set' '
33         cd server &&
34         git config hooks.update-lock-check.locked "foo bar master" &&
35         cd .. &&
36
37         echo "$test_name" >a &&
38         git commit -a -m "changed" &&
39         ! git push 2>push.err &&
40         cat push.err | grep "Branch master is locked"
41 '
42
43 test_expect_success 'preserved branch cannot be deleted' '
44         cd server &&
45         git config hooks.update-lock-check.locked "" &&
46         git config hooks.update-lock-check.preserved master &&
47         cd .. &&
48
49         ! git push origin :master 2>push.err &&
50         cat push.err | grep "Branch master cannot be deleted"
51 '
52
53 test_done
54