blob: 05591136c1ce7f23a6b5a9db75e6917e4142d261 (
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
#!/bin/sh
# Load functions.sh
. "/etc/init.d/functions.sh"
SUPPORTED_VCS="cvs svn git"
VCSTEST="echangelog-test/vcstest"
_ROOT=$(pwd)
# bug 373421
unset GENTOO_AUTHOR_NAME GENTOO_AUTHOR_EMAIL \
GENTOO_COMMITTER_NAME GENTOO_COMMITTER_EMAIL
export GENTOO_COMMITTER_NAME="Just a test"
export GENTOO_COMMITTER_EMAIL="echangelogtest@gentoo.org"
MD5_INIT="21ac109c53cf02378593a4f613b2bb55"
MD5_PATCH="f3fa1cacae3bf51d6188278e6a5fd0c6"
MD5_REVBUMP="e474aa136f06e2a001320240b2ae92bd"
MD5_COPYRIGHT="9ce45576db5489c4f109ed9ef9ffe05e"
MD5_OBSOLETE="f0079450e03e69741502776a6b8138dc"
MD5_FINAL="a3954786368fd92d8466bc65cbf689fc"
UPDATE_MD5=0
md5() {
local fname=$1
local var=$2
local md5=$(md5sum ${fname} | awk '{ print $1 }')
[ ${UPDATE_MD5:-0} -eq 1 ] && echo "${var}=\"${md5}\"" >> ${_ROOT}/MD5.new
echo $md5
}
ech() {
local bin=$1
shift
local msg="${*}"
perl -I$(dirname $(dirname ${bin})) $bin $msg
}
make_test() {
local root=$1
local vcs=$2
local echangelog="${root}/tmp/echangelog"
local tmp="${root}/tmp/${vcs}"
local template="${root}/templates"
cd $root
mkdir -p ${tmp}
cd ${tmp}
[ "${vcs}" = "cvs" ] && mkdir -p ${tmp}/cvsroot
[ "${vcs}" = "svn" ] && mkdir -p ${tmp}/svnroot
if [ "${vcs}" = "git" ]; then
git init
# bug 454782
git config user.name "${GENTOO_COMMITTER_NAME}"
git config user.email "${GENTOO_COMMITTER_EMAIL}"
touch .gitignore
git add .gitignore
git commit -a -m 'Initial Commit'
elif [ "${vcs}" = "svn" ]; then
svnadmin create svnroot
svn co file://${tmp}/svnroot svn
cd svn
elif [ "${vcs}" = "cvs" ]; then
CVSROOT="${tmp}/cvsroot" cvs init
mkdir cvsroot/cvs
cvs -d:local:${tmp}/cvsroot co cvs
cd cvs
fi
mkdir -p ${VCSTEST}
cp ${template}/vcstest-0.0.1.ebuild ${VCSTEST}
${vcs} add $(dirname ${VCSTEST})
if [ "${vcs}" = "cvs" ]; then
${vcs} add ${VCSTEST}
${vcs} add "${VCSTEST}/vcstest-0.0.1.ebuild"
fi
cd ${VCSTEST}
ech ${echangelog} --vcs $vcs 'New ebuild for bug <id>.'
if [ "${MD5_INIT}" != "$(md5 ChangeLog MD5_INIT)" ]; then
eerror "WRONG MD5_INIT!"
fi
mkdir files
cp ${template}/test.patch files
if [ "${vcs}" = "cvs" ]; then
${vcs} add files/
${vcs} add files/test.patch
else
${vcs} add files
fi
ech ${echangelog} --vcs $vcs "Added adittional patch to fix foo."
if [ "${MD5_PATCH}" != "$(md5 ChangeLog MD5_PATCH)" ]; then
eerror "WRONG MD5_PATCH!"
fi
if [ "${vcs}" = "svn" ]; then
${vcs} commit -m 'New ebuild for bug <id>.' ../
else
${vcs} commit -m 'New ebuild for bug <id>.'
fi
[ "${vcs}" = "cvs" ] && sed -i -e 's:# $Header\: .*$:# $Header\: $:' ChangeLog
cp vcstest-0.0.1.ebuild vcstest-0.0.1-r1.ebuild
${vcs} add vcstest-0.0.1-r1.ebuild
ech ${echangelog} --vcs $vcs "Revbump..."
if [ "${MD5_REVBUMP}" != "$(md5 ChangeLog MD5_REVBUMP)" ]; then
eerror "WRONG MD5_REVBUMP!"
fi
sed -i -e 's:# Copyright 1999-2009 Gentoo Foundation:# Copyright 1999-2010 Gentoo Foundation:' vcstest-0.0.1.ebuild
ech ${echangelog} --vcs $vcs "Revbump...; Just copyright changed."
if [ "${MD5_COPYRIGHT}" != "$(md5 ChangeLog MD5_COPYRIGHT)" ]; then
eerror "WRONG MD5_COPYRIGHT!"
fi
if [ "${vcs}" = "cvs" ]; then
rm -f files/test.patch
${vcs} remove files/test.patch
else
${vcs} rm files/test.patch
fi
ech ${echangelog} --vcs $vcs "Revbump...; Just copyright changed; Removed obsolete patch."
if [ "${MD5_OBSOLETE}" != "$(md5 ChangeLog MD5_OBSOLETE)" ]; then
eerror "WRONG MD5_OBSOLETE!"
fi
echo "foobar" >> vcstest-0.0.1.ebuild
ech ${echangelog} --vcs $vcs "Revbump...; Just copyright changed; Removed obsolete patch; Modified more then just the copyright."
if [ "${MD5_FINAL}" != "$(md5 ChangeLog MD5_FINAL)" ]; then
eerror "WRONG MD5_FINAL!"
fi
}
[ -d "${_ROOT}/tmp" ] && rm -rf ${_ROOT}/tmp
[ -f "${_ROOT}/MD5.new" ] && rm -f ${_ROOT}/MD5.new
mkdir -p ${_ROOT}/tmp
ebegin "Preparing echangelog"
if [ -e "../echangelog" ]; then
cp ../echangelog "${_ROOT}/tmp" || set $?
sed -i -e 's:use POSIX qw.*:use POSIX qw(setlocale getcwd);\nuse TEST qw(strftime);:' "${_ROOT}/tmp/echangelog" || set $?
eend ${1:-0} || exit ${1}
else
eerror "error"
eend ${1:-1}
exit 1
fi
for vcs in $SUPPORTED_VCS; do
if [ -x "$(which ${vcs} 2>/dev/null)" ]; then
ebegin "Starting test with ${vcs}"
make_test $_ROOT "${vcs}" || set $?
eend ${1:-0}
[ ${UPDATE_MD5:-0} -eq 1 ] && break
else
ewarn "No ${vcs} executable found, skipping test..."
fi
done
exit ${1:-0}
|