1 | #!/bin/bash |
---|
2 | #------------------------------------------------------------------------------- |
---|
3 | # (C) British Crown Copyright 2006-17 Met Office. |
---|
4 | # |
---|
5 | # This file is part of FCM, tools for managing and building source code. |
---|
6 | # |
---|
7 | # FCM is free software: you can redistribute it and/or modify |
---|
8 | # it under the terms of the GNU General Public License as published by |
---|
9 | # the Free Software Foundation, either version 3 of the License, or |
---|
10 | # (at your option) any later version. |
---|
11 | # |
---|
12 | # FCM is distributed in the hope that it will be useful, |
---|
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
15 | # GNU General Public License for more details. |
---|
16 | # |
---|
17 | # You should have received a copy of the GNU General Public License |
---|
18 | # along with FCM. If not, see <http://www.gnu.org/licenses/>. |
---|
19 | #------------------------------------------------------------------------------- |
---|
20 | # Basic tests for "pre-revprop-change". |
---|
21 | #------------------------------------------------------------------------------- |
---|
22 | . $(dirname $0)/test_header |
---|
23 | FCM_SVN_HOOK_ADMIN_EMAIL=your.admin.team |
---|
24 | . $TEST_SOURCE_DIR/test_header_more |
---|
25 | #------------------------------------------------------------------------------- |
---|
26 | tests 16 |
---|
27 | #------------------------------------------------------------------------------- |
---|
28 | cp -p "$FCM_HOME/etc/svn-hooks/pre-revprop-change" "$REPOS_PATH/hooks/" |
---|
29 | echo Hello >file |
---|
30 | svn import -q -m'test' file "$REPOS_URL/file" |
---|
31 | #------------------------------------------------------------------------------- |
---|
32 | TEST_KEY=$TEST_KEY_BASE |
---|
33 | rm -f mail.out |
---|
34 | run_pass "$TEST_KEY" \ |
---|
35 | svn propset -q --revprop -r 1 'svn:log' 'Add hello file' "$REPOS_URL" |
---|
36 | run_fail "$TEST_KEY.mail.out" test -f mail.out |
---|
37 | #------------------------------------------------------------------------------- |
---|
38 | TEST_KEY=$TEST_KEY_BASE-bad-prop |
---|
39 | run_fail "$TEST_KEY" \ |
---|
40 | svn propset -q --revprop -r 1 'svn:author' 'boogeyman' "$REPOS_URL" |
---|
41 | file_grep "$TEST_KEY.err" \ |
---|
42 | "\[M svn:author\] permission denied." \ |
---|
43 | "$TEST_KEY.err" |
---|
44 | EXPR="\[! .....*-..-..T..:..:..Z\] $REPOS_PATH 1 $USER svn:author M" |
---|
45 | file_grep "$TEST_KEY.log" "$EXPR" "$REPOS_PATH/log/pre-revprop-change.log" |
---|
46 | file_grep "$TEST_KEY.mail.out" "$EXPR" mail.out |
---|
47 | #------------------------------------------------------------------------------- |
---|
48 | TEST_KEY=$TEST_KEY_BASE-bad-action |
---|
49 | run_fail "$TEST_KEY" \ |
---|
50 | svn propdel -q --revprop -r 1 'svn:log' "$REPOS_URL" |
---|
51 | file_grep "$TEST_KEY.err" \ |
---|
52 | "\[D svn:log\] permission denied. Can only do: \[M svn:log\]" \ |
---|
53 | "$TEST_KEY.err" |
---|
54 | EXPR="\[! .....*-..-..T..:..:..Z\] $REPOS_PATH 1 $USER svn:log D" |
---|
55 | file_grep "$TEST_KEY.log" "$EXPR" "$REPOS_PATH/log/pre-revprop-change.log" |
---|
56 | file_grep "$TEST_KEY.mail.out" "$EXPR" mail.out |
---|
57 | #------------------------------------------------------------------------------- |
---|
58 | TEST_KEY=$TEST_KEY_BASE-conf-bad |
---|
59 | cat >"$REPOS_PATH/hooks/pre-revprop-change-ok.conf" <<'__CONF__' |
---|
60 | M svn:author |
---|
61 | M svn:log |
---|
62 | __CONF__ |
---|
63 | run_fail "$TEST_KEY" svn propdel -q --revprop -r 1 'svn:author' "$REPOS_URL" |
---|
64 | file_grep "$TEST_KEY.err" \ |
---|
65 | "\[D svn:author\] permission denied. Can only do: \[M svn:author\] \[M svn:log\]" \ |
---|
66 | "$TEST_KEY.err" |
---|
67 | EXPR="\[! .....*-..-..T..:..:..Z\] $REPOS_PATH 1 $USER svn:author D" |
---|
68 | file_grep "$TEST_KEY.log" "$EXPR" "$REPOS_PATH/log/pre-revprop-change.log" |
---|
69 | file_grep "$TEST_KEY.mail.out" "$EXPR" mail.out |
---|
70 | rm -f "$REPOS_PATH/hooks/pre-revprop-change-ok.conf" |
---|
71 | #------------------------------------------------------------------------------- |
---|
72 | TEST_KEY=$TEST_KEY_BASE-conf-good |
---|
73 | rm -f mail.out |
---|
74 | cat >"$REPOS_PATH/hooks/pre-revprop-change-ok.conf" <<'__CONF__' |
---|
75 | M svn:author |
---|
76 | M svn:log |
---|
77 | __CONF__ |
---|
78 | run_pass "$TEST_KEY" \ |
---|
79 | svn propset -q --revprop -r 1 'svn:author' 'arthur' "$REPOS_URL" |
---|
80 | run_fail "$TEST_KEY.mail.out" test -f mail.out |
---|
81 | rm -f "$REPOS_PATH/hooks/pre-revprop-change-ok.conf" |
---|
82 | #------------------------------------------------------------------------------- |
---|
83 | exit |
---|