New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
03-post-commit-bg.t in vendors/t/svn-hooks – NEMO

source: vendors/t/svn-hooks/03-post-commit-bg.t @ 10669

Last change on this file since 10669 was 10669, checked in by nicolasmartin, 5 years ago

Import latest FCM release from Github into the repository for testing

File size: 17.3 KB
Line 
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 "post-commit-bg".
21#-------------------------------------------------------------------------------
22. $(dirname $0)/test_header
23FCM_SVN_HOOK_ADMIN_EMAIL=fcm.admin.team
24. $TEST_SOURCE_DIR/test_header_more
25
26test_tidy() {
27    rm -f \
28        "$REPOS_PATH/hooks/post-commit-bg-custom" \
29        "$REPOS_PATH/hooks/post-commit-background-custom" \
30        "$REPOS_PATH/hooks/commit.conf" \
31        "$REPOS_PATH/log/post-commit.log" \
32        'file1' \
33        'file2' \
34        'file3' \
35        'file4' \
36        'file5' \
37        'svnperms.conf' \
38        'mail.out'
39}
40#-------------------------------------------------------------------------------
41tests 44
42#-------------------------------------------------------------------------------
43cp -p "$FCM_HOME/etc/svn-hooks/post-commit" "$REPOS_PATH/hooks/"
44sed -i "/set -eu/a\
45echo \$2 >$PWD/rev; echo \$3 >$PWD/txn" "$REPOS_PATH/hooks/post-commit"
46#-------------------------------------------------------------------------------
47TEST_KEY="$TEST_KEY_BASE-basic"
48test_tidy
49touch file1
50svn import --no-auth-cache -q -m"$TEST_KEY" file1 "$REPOS_URL/file1"
51REV=$(<rev)
52poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
53date2datefmt "$REPOS_PATH/log/post-commit.log" \
54    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
55    >"$TEST_KEY.log"
56file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
57YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
58svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
59    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
60* Dumped revision $REV.
61mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
62REV_FILE_SIZE=??? # <1MB
63RET_CODE=0
64__LOG__
65if [[ -n ${TRAC_ENV_PATH:-} ]] && ! $TRAC_RESYNC; then
66    sqlite3 "$TRAC_ENV_PATH/db/trac.db" \
67        'SELECT cast(rev as integer),message FROM revision;' \
68        >"$TEST_KEY.trac.db.expected"
69    file_cmp "$TEST_KEY.trac.db" \
70        "$TEST_KEY.trac.db.expected" <<<"$REV|$TEST_KEY"
71else
72    skip 1 '"trac-admin changeset added" not available'
73fi
74run_pass "$TEST_KEY.dump" test -s "$PWD/svn-dumps/foo-$REV.gz"
75run_fail "$TEST_KEY.mail.out" test -e mail.out
76#-------------------------------------------------------------------------------
77# Install and remove commit.conf, svnperms.conf
78for NAME in 'commit.conf' 'svnperms.conf'; do
79    TEST_KEY="$TEST_KEY_BASE-no-add-${NAME}"
80    test_tidy
81    # (Use "svnperms.conf" syntax. Doesn't matter for the purpose of this test.)
82    cat >"${NAME}" <<'__CONF__'
83[foo]
84.*=*(add,remove,update)
85__CONF__
86    mkdir -p "svn-hooks/foo"
87    cat >"svn-hooks/foo/${NAME}" <<'__CONF__'
88# This is the site override
89[foo]
90.*=*(add,remove,update)
91__CONF__
92    cp -p "svn-hooks/foo/${NAME}" "$REPOS_PATH/hooks/${NAME}"
93    svn import --no-auth-cache -q -m"${TEST_KEY}" "${NAME}" \
94        "${REPOS_URL}/${NAME}"
95    REV="$(<'rev')"
96    poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
97    date2datefmt "$REPOS_PATH/log/post-commit.log" \
98        | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
99        >"$TEST_KEY.log"
100    file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
101YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
102svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
103    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
104* Dumped revision $REV.
105mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
106REV_FILE_SIZE=??? # <1MB
107RET_CODE=0
108__LOG__
109    file_cmp "${TEST_KEY}.conf" \
110        "svn-hooks/foo/${NAME}" "$REPOS_PATH/hooks/${NAME}"
111    rm -fr 'svn-hooks'
112
113    test_tidy
114    svn delete --no-auth-cache -q -m"Delete ${TEST_KEY}" "${REPOS_URL}/${NAME}"
115
116    TEST_KEY="$TEST_KEY_BASE-add-${NAME}"
117    test_tidy
118    # (Use "svnperms.conf" syntax. Doesn't matter for the purpose of this test.)
119    cat >${NAME} <<'__CONF__'
120[foo]
121.*=*(add,remove,update)
122__CONF__
123    svn import --no-auth-cache -q -m"$TEST_KEY" ${NAME} \
124        "$REPOS_URL/${NAME}"
125    REV=$(<rev)
126    poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
127    date2datefmt "$REPOS_PATH/log/post-commit.log" \
128        | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
129        >"$TEST_KEY.log"
130    file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
131YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
132svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
133    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
134* Dumped revision $REV.
135mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
136REV_FILE_SIZE=??? # <1MB
137svnlook cat $REPOS_PATH ${NAME} >$REPOS_PATH/hooks/${NAME}
138RET_CODE=0
139__LOG__
140    file_cmp "$TEST_KEY.conf" ${NAME} "$REPOS_PATH/hooks/${NAME}"
141
142    TEST_KEY="$TEST_KEY_BASE-modify-${NAME}"
143    test_tidy
144    svn co -q "$REPOS_URL" work
145    # (Use "svnperms.conf" syntax. Doesn't matter for the purpose of this test.)
146    cat >work/${NAME} <<'__CONF__'
147[foo]
148.*=*(add,remove,update)
149
150[bar]
151__CONF__
152    svn commit --no-auth-cache -q -m"$TEST_KEY" work
153    REV=$(<rev)
154    poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
155    date2datefmt "$REPOS_PATH/log/post-commit.log" \
156        | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
157        >"$TEST_KEY.log"
158    file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
159YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
160svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
161    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
162* Dumped revision $REV.
163mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
164REV_FILE_SIZE=??? # <1MB
165svnlook cat $REPOS_PATH ${NAME} >$REPOS_PATH/hooks/${NAME}
166RET_CODE=0
167__LOG__
168    file_cmp "$TEST_KEY.conf" work/${NAME} "$REPOS_PATH/hooks/${NAME}"
169    rm -f -r work
170
171    TEST_KEY="$TEST_KEY_BASE-remove-${NAME}"
172    test_tidy
173    touch "$REPOS_PATH/hooks/${NAME}"
174    svn rm --no-auth-cache -q -m'remove ${NAME}' "$REPOS_URL/${NAME}"
175    REV=$(<rev)
176    poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
177    date2datefmt "$REPOS_PATH/log/post-commit.log" \
178        | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
179        >"$TEST_KEY.log"
180    file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
181YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
182svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
183    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
184* Dumped revision $REV.
185mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
186REV_FILE_SIZE=??? # <1MB
187rm -f $REPOS_PATH/hooks/${NAME}
188RET_CODE=0
189__LOG__
190    run_fail "$TEST_KEY.conf" test -e "$REPOS_PATH/hooks/${NAME}"
191done
192#-------------------------------------------------------------------------------
193TEST_KEY="$TEST_KEY_BASE-size"
194test_tidy
195perl -e 'map {print(rand())} 1..524288' >file2 # compress should be >1MB
196svn import --no-auth-cache -q -m"$TEST_KEY" file2 "$REPOS_URL/file2"
197REV=$(<rev)
198poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
199date2datefmt "$REPOS_PATH/log/post-commit.log" \
200    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
201    >"$TEST_KEY.log"
202file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
203YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
204svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
205    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
206* Dumped revision $REV.
207mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
208REV_FILE_SIZE=??? # >1MB <10MB
209RET_CODE=1
210__LOG__
211date2datefmt mail.out \
212    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
213    >"$TEST_KEY.mail.out"
214file_cmp "$TEST_KEY.mail.out" "$TEST_KEY.mail.out" <<__LOG__
215-s [post-commit-bg] $REPOS_PATH@$REV fcm.admin.team
216YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
217svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
218    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
219* Dumped revision $REV.
220mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
221REV_FILE_SIZE=??? # >1MB <10MB
222RET_CODE=1
223__LOG__
224#-------------------------------------------------------------------------------
225TEST_KEY="$TEST_KEY_BASE-size-2"
226test_tidy
227perl -e 'map {print(rand())} 1..2097152' >'file3' # compress should be >10MB
228svn import --no-auth-cache -q -m"${TEST_KEY}" 'file3' "${REPOS_URL}/file3"
229REV="$(<'rev')"
230poll 10 grep -q '^RET_CODE=' "${REPOS_PATH}/log/post-commit.log"
231poll 10 test -e 'mail.out'
232date2datefmt "${REPOS_PATH}/log/post-commit.log" \
233    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
234    >"${TEST_KEY}.log"
235file_cmp "${TEST_KEY}.log" "${TEST_KEY}.log" <<__LOG__
236YYYY-mm-ddTHH:MM:SSZ+ ${REV} by ${USER}
237svnadmin dump -r${REV} --incremental --deltas ${REPOS_PATH} | gzip \\
238    | (dd 'conv=fsync' "of=${PWD}/svn-dumps/foo-${REV}-tmp.gz" 2>/dev/null)
239* Dumped revision ${REV}.
240mv "${PWD}/svn-dumps/foo-${REV}-tmp.gz" "${PWD}/svn-dumps/foo-${REV}.gz"
241REV_FILE_SIZE=??? # >10MB
242RET_CODE=1
243__LOG__
244date2datefmt mail.out \
245    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
246    >"${TEST_KEY}.mail.out"
247file_cmp "${TEST_KEY}.mail.out" "${TEST_KEY}.mail.out" <<__LOG__
248-s [post-commit-bg] ${REPOS_PATH}@${REV} fcm.admin.team
249YYYY-mm-ddTHH:MM:SSZ+ ${REV} by ${USER}
250svnadmin dump -r${REV} --incremental --deltas ${REPOS_PATH} | gzip \\
251    | (dd 'conv=fsync' "of=${PWD}/svn-dumps/foo-${REV}-tmp.gz" 2>/dev/null)
252* Dumped revision ${REV}.
253mv "${PWD}/svn-dumps/foo-${REV}-tmp.gz" "${PWD}/svn-dumps/foo-${REV}.gz"
254REV_FILE_SIZE=??? # >10MB
255RET_CODE=1
256__LOG__
257#-------------------------------------------------------------------------------
258TEST_KEY="$TEST_KEY_BASE-custom-1" # good custom
259test_tidy
260touch file4
261cat >"$REPOS_PATH/hooks/post-commit-bg-custom" <<'__BASH__'
262#!/bin/bash
263echo "$@"
264__BASH__
265chmod +x "$REPOS_PATH/hooks/post-commit-bg-custom"
266svn import --no-auth-cache -q -m"$TEST_KEY" file4 "$REPOS_URL/file4"
267REV=$(<rev)
268TXN=$(<txn)
269poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
270date2datefmt "$REPOS_PATH/log/post-commit.log" \
271    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
272    >"$TEST_KEY.log"
273file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
274YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
275svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
276    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
277* Dumped revision $REV.
278mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
279REV_FILE_SIZE=??? # <1MB
280$REPOS_PATH/hooks/post-commit-bg-custom $REPOS_PATH $REV $TXN
281$REPOS_PATH $REV $TXN
282RET_CODE=0
283__LOG__
284run_fail "$TEST_KEY.mail.out" test -e mail.out
285#-------------------------------------------------------------------------------
286TEST_KEY="$TEST_KEY_BASE-custom-2" # bad custom
287test_tidy
288cat >"$REPOS_PATH/hooks/post-commit-background-custom" <<'__BASH__'
289#!/bin/bash
290echo 'I have gone to the dark side.' >&2
291false
292__BASH__
293chmod +x "$REPOS_PATH/hooks/post-commit-background-custom"
294touch file5
295svn import --no-auth-cache -q -m"$TEST_KEY" file5 "$REPOS_URL/file5"
296REV=$(<rev)
297TXN=$(<txn)
298poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
299date2datefmt "$REPOS_PATH/log/post-commit.log" \
300    | sed '/^trac-admin/d; s/^\(REV_FILE_SIZE=\).*\( #\)/\1???\2/' \
301    >"$TEST_KEY.log"
302file_cmp "$TEST_KEY.log" "$TEST_KEY.log" <<__LOG__
303YYYY-mm-ddTHH:MM:SSZ+ $REV by $USER
304svnadmin dump -r$REV --incremental --deltas $REPOS_PATH | gzip \\
305    | (dd 'conv=fsync' "of=$PWD/svn-dumps/foo-$REV-tmp.gz" 2>/dev/null)
306* Dumped revision $REV.
307mv "$PWD/svn-dumps/foo-$REV-tmp.gz" "$PWD/svn-dumps/foo-$REV.gz"
308REV_FILE_SIZE=??? # <1MB
309$REPOS_PATH/hooks/post-commit-background-custom $REPOS_PATH $REV $TXN
310I have gone to the dark side.
311RET_CODE=1
312__LOG__
313file_test "$TEST_KEY.mail.out" mail.out
314#-------------------------------------------------------------------------------
315# Test branch owner notification
316echo 'Hello World' >file
317svn import -q -m'hello world' file "$REPOS_URL/hello/trunk/file"
318poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
319
320TEST_KEY="$TEST_KEY_BASE-branch-create-owner-1" # create author is owner
321test_tidy
322echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
323svn cp -q -m '' --parents \
324    "$REPOS_URL/hello/trunk" \
325    "$REPOS_URL/hello/branches/dev/$USER/whatever"
326poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
327run_fail "$TEST_KEY.mail.out" test -s mail.out
328
329TEST_KEY="$TEST_KEY_BASE-branch-create-owner-2" # create author not owner
330test_tidy
331echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
332svn cp -q -m '' --parents \
333    --username=root \
334    --no-auth-cache \
335    "$REPOS_URL/hello/trunk" \
336    "$REPOS_URL/hello/branches/test/$USER/whatever"
337REV=$(<rev)
338poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
339file_grep "$TEST_KEY.mail.out.1" \
340    "^-rnotifications@localhost -sfoo@${REV} by root" mail.out
341file_grep "$TEST_KEY.mail.out.2" "^r${REV} | root" mail.out
342
343TEST_KEY="$TEST_KEY_BASE-branch-create-owner-3" # same as 2, but no notify
344test_tidy
345svn cp -q -m '' --parents \
346    --username=root \
347    --no-auth-cache \
348    "$REPOS_URL/hello/trunk" \
349    "$REPOS_URL/hello/branches/test/$USER/whatever2"
350poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
351run_fail "$TEST_KEY.mail.out" test -s mail.out
352
353TEST_KEY="$TEST_KEY_BASE-branch-modify-owner-1" # modify author is owner
354test_tidy
355echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
356svn co -q "$REPOS_URL/hello/branches/dev/$USER/whatever" hello
357echo 'Hello Earth' >hello/file
358svn ci -q -m'Hello Earth' hello/file
359poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
360run_fail "$TEST_KEY.mail.out" test -s mail.out
361
362TEST_KEY="$TEST_KEY_BASE-branch-modify-owner-2" # modify author not owner
363test_tidy
364echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
365#svn co -q "$REPOS_URL/hello/branches/dev/$USER/whatever" hello
366echo 'Hello Alien' >hello/file
367svn ci -q -m'Hello Earth' --username=root --no-auth-cache hello/file
368poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
369REV=$(<rev)
370file_grep "$TEST_KEY.mail.out.1" \
371    "^-rnotifications@localhost -sfoo@${REV} by root" mail.out
372file_grep "$TEST_KEY.mail.out.2" "^r${REV} | root" mail.out
373
374TEST_KEY="$TEST_KEY_BASE-share-branch-owner-1" # modify share author is owner
375test_tidy
376echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
377svn cp -q -m '' --parents \
378    "$REPOS_URL/hello/trunk" \
379    "$REPOS_URL/hello/branches/dev/Share/whatever"
380poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
381run_fail "$TEST_KEY.create.mail.out" test -s mail.out
382test_tidy
383echo 'Greet Alien' >'greet.txt'
384svn import -q -m '' 'greet.txt' \
385    "$REPOS_URL/hello/branches/dev/Share/whatever/greet.txt"
386poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
387run_fail "$TEST_KEY.modify.mail.out" test -s mail.out
388
389TEST_KEY="$TEST_KEY_BASE-share-branch-owner-2" # modify share author not owner
390test_tidy
391echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
392echo 'Hail Alien' >'hail.txt'
393svn import -q -m '' --username=root --no-auth-cache 'hail.txt' \
394    "$REPOS_URL/hello/branches/dev/Share/whatever/hail.txt"
395poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
396REV=$(<rev)
397file_grep "$TEST_KEY.mail.out.1" \
398    "^-rnotifications@localhost -sfoo@${REV} by root" 'mail.out'
399file_grep "$TEST_KEY.mail.out.2" "^r${REV} | root" 'mail.out'
400
401TEST_KEY="$TEST_KEY_BASE-branch-delete-owner-1" # delete author is owner
402test_tidy
403echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
404svn rm -q -m'No Hello' "$REPOS_URL/hello/branches/dev/$USER/whatever"
405poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
406run_fail "$TEST_KEY.mail.out" test -s mail.out
407
408TEST_KEY="$TEST_KEY_BASE-branch-delete-owner-2" # delete author not owner
409test_tidy
410echo 'notify-owner' >"${REPOS_PATH}/hooks/commit.conf"
411svn rm -q -m'No Hello' --username=root --no-auth-cache \
412    "$REPOS_URL/hello/branches/test/$USER/whatever"
413poll 10 grep -q '^RET_CODE=' "$REPOS_PATH/log/post-commit.log"
414REV=$(<rev)
415file_grep "$TEST_KEY.mail.out.1" \
416    "^-rnotifications@localhost -sfoo@${REV} by root" mail.out
417file_grep "$TEST_KEY.mail.out.2" "^r${REV} | root" mail.out
418#-------------------------------------------------------------------------------
419# Test owner notification
420TEST_KEY="${TEST_KEY_BASE}-owner-1" # trunk author is not owner
421test_tidy
422cat >"${REPOS_PATH}/hooks/commit.conf" <<__CONF__
423notify-owner
424owner = $USER
425__CONF__
426rm -fr 'hello'
427svn co -q "${REPOS_URL}/hello/trunk" 'hello'
428echo 'Hello' >'hello/file'
429svn ci -q -m 'hello whatever' '--no-auth-cache' '--username=root' 'hello'
430poll 10 grep -q '^RET_CODE=' "${REPOS_PATH}/log/post-commit.log"
431poll 10 test -e 'mail.out'
432REV="$(<rev)"
433file_grep "${TEST_KEY}.mail.out.1" \
434    "^-rnotifications@localhost -sfoo@${REV} by root" 'mail.out'
435file_grep "${TEST_KEY}.mail.out.2" "^r${REV} | root" 'mail.out'
436#-------------------------------------------------------------------------------
437exit
Note: See TracBrowser for help on using the repository browser.