blob: 81371dd019f100cba289cc825baa853d14407452 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
#!/bin/bash
set -eu
hook=$(pwd)/resources/com/google/gerrit/server/tools/root/hooks/commit-msg
cd $TEST_TMPDIR
function fail {
echo "FAIL: $1"
exit 1
}
function test_nonexistent_argument {
rm -f input
if ${hook} input ; then
fail "must fail for non-existent input"
fi
}
function test_empty {
rm -f input
touch input
if ${hook} input ; then
fail "must fail on empty message"
fi
}
# a Change-Id already set is preserved.
function test_preserve_changeid {
cat << EOF > input
bla bla
Change-Id: I123
EOF
${hook} input || fail "failed hook execution"
found=$(grep -c '^Change-Id' input)
if [[ "${found}" != "1" ]]; then
fail "got ${found} Change-Ids, want 1"
fi
found=$(grep -c '^Change-Id: I123' input)
if [[ "${found}" != "1" ]]; then
fail "got ${found} Change-Id: I123, want 1"
fi
}
# Change-Id should not be inserted if gerrit.createChangeId=false
function test_suppress_changeid {
cat << EOF > input
bla bla
EOF
git config gerrit.createChangeId false
${hook} input || fail "failed hook execution"
git config --unset gerrit.createChangeId
found=$(grep -c '^Change-Id' input || true)
if [[ "${found}" != "0" ]]; then
fail "got ${found} Change-Ids, want 0"
fi
}
# Change-Id goes after existing trailers.
function test_at_end {
cat << EOF > input
bla bla
Bug: #123
EOF
${hook} input || fail "failed hook execution"
result=$(tail -1 input | grep ^Change-Id)
if [[ -z "${result}" ]] ; then
echo "after: "
cat input
fail "did not find Change-Id at end"
fi
}
function test_dash_at_end {
if [[ ! -x /bin/dash ]] ; then
echo "/bin/dash not installed; skipping dash test."
return
fi
cat << EOF > input
bla bla
Bug: #123
EOF
/bin/dash ${hook} input || fail "failed hook execution"
result=$(tail -1 input | grep ^Change-Id)
if [[ -z "${result}" ]] ; then
echo "after: "
cat input
fail "did not find Change-Id at end"
fi
}
function test_preserve_dash_changeid {
if [[ ! -x /bin/dash ]] ; then
echo "/bin/dash not installed; skipping dash test."
return
fi
cat << EOF > input
bla bla
Change-Id: I123
EOF
/bin/dash ${hook} input || fail "failed hook execution"
found=$(grep -c '^Change-Id' input)
if [[ "${found}" != "1" ]]; then
fail "got ${found} Change-Ids, want 1"
fi
found=$(grep -c '^Change-Id: I123' input)
if [[ "${found}" != "1" ]]; then
fail "got ${found} Change-Id: I123, want 1"
fi
}
# Test driver.
for func in $( declare -F | awk '{print $3;}' | sort); do
case ${func} in
test_*)
echo "=== testing $func"
${func}
echo "--- done $func"
;;
esac
done
|