4 # This file runs wanna-build in a clean environment to make sure, certain
5 # features work as expected.
10 # * Marks it as uploaded
11 # * Uploads a source with build-depends
12 # - Makes sure the package is marked Dep-Wait
13 # * Uploads a new version of the dependency
14 # - Makes sure the Dep-Wait is cleared
22 echo "Assertion failed: $1"
27 function assert_grep {
28 cat > $testdir/assert_grep
29 if ! grep -q "$1" $testdir/assert_grep
31 echo "Could not find expected \"$1\" in:"
32 cat $testdir/assert_grep
33 # We are in a pipe, i.e. a subshell, so kill the parent
34 kill -TERM $parent_pid
39 function assert_grep_not {
40 cat > $testdir/assert_grep
41 if grep -q "$1" $testdir/assert_grep
43 echo "Could find unexpected \"$1\" in:"
44 cat $testdir/assert_grep
45 # We are in a pipe, i.e. a subshell, so kill the parent
46 kill -TERM $parent_pid
53 assert "[ -e bin/wanna-build ]"
59 # This is a fake configuration file to make sure we do not interfere with a
60 # possibly installed wanna-build instance
61 cat > $testdir/wanna-build.conf <<__END__
62 \$basedir = "$testdir/db";
64 \$db_maint = "wb-team\@dontsend.buildd.debian.org";
65 \$notforus_maint = "notforus\@dontsend.buildd.debian.org";
66 \$stat_mail = "wb-team\@dontsend.buildd.debian.org";
67 \$buildd_domain = "buildd.debian.org";
68 \$web_stats = "/var/www/buildd/stats.txt";
69 @sections = qw(main contrib non-US/main non-US/contrib);
70 \$pkgs_source = "$testdir/ftp";
71 \$quinn_source = "$testdir/quinn-diff-output";
72 \$quinn_source_multi_section = 0;
73 @admin_users = qw(wbadm $USER);
74 \$mailprog = "/bin/true";
78 # don't remove this, Perl needs it:
83 mkdir $testdir/db/amd64;
85 function wanna-build {
86 # Here we make sure that the "require /etc/wanan-build.conf" does not
87 # have effect, and load our own file instead.
88 #echo "Executing wanna-build" "$@" >&2
89 export PERL5LIB=/home/jojo/debian/wanna-build/testsetup/bin
92 do "./tests/tmp/wanna-build.conf";
93 $INC{"/etc/wanna-build.conf"}=1;
97 require "./bin/wanna-build";
104 wanna-build -A amd64 -b amd64/build-db --create-db --info no-package-1.2.3
106 echo Load some sources
108 cat > $testdir/Packages <<__END__
114 cat > $testdir/quinn-diff <<__END__
115 misc/src-a_1.dsc [optional:uncompiled]
117 cat > $testdir/Sources <<__END__
123 Binary: bin-a-indep,bin-a-1
125 wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources
127 # Test that they exist are in state Needs-Build
128 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State.*: Needs-Build'
130 echo Take for building
131 wanna-build -A amd64 -b amd64/build-db --take src-a_1
132 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State.*: Building'
135 wanna-build -A amd64 -b amd64/build-db --uploaded src-a_1
136 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State.*: Uploaded'
138 echo Load the binaries for the sources
139 cat > $testdir/Packages <<__END__
150 cat > $testdir/quinn-diff <<__END__
152 cat > $testdir/Sources <<__END__
158 Binary: bin-a-indep,bin-a-1
160 wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources
162 # Test that they exist are in state Needs-Build
163 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State .*: Installed'
165 echo Upload another source that needs bin-a-1 in Version 2
166 cat > $testdir/Packages <<__END__
177 cat > $testdir/quinn-diff <<__END__
178 misc/src-b_1.dsc [optional:uncompiled]
180 cat > $testdir/Sources <<__END__
186 Binary: bin-a-indep,bin-a-1
193 Build-Depends: bin-a-1 (>= 2)
196 wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources
198 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep "bin-a-1 (>= 2)"
199 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State .*: BD-Uninstallable"
200 wanna-build -A amd64 -b amd64/build-db --list bd-uninstallable | assert_grep "src-b"
202 echo Uploading the new source with an updated binary package
203 cat > $testdir/Packages <<__END__
214 cat > $testdir/quinn-diff <<__END__
215 misc/src-b_1.dsc [optional:uncompiled]
217 cat > $testdir/Sources <<__END__
223 Binary: bin-a-indep,bin-a-1
230 Build-Depends: bin-a-1 (>= 2)
233 wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources
235 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Needs-Build"
236 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep_not "BD-Problem.*:"
238 echo "Exporting database"
239 wanna-build -A amd64 -b amd64/build-db --export $testdir/export1
241 echo "Importing database"
242 wanna-build -A amd64 -b amd64/build-db --import $testdir/export1
244 echo "Exporting database again"
245 wanna-build -A amd64 -b amd64/build-db --export $testdir/export2
247 if ! diff -q $testdir/export1 $testdir/export2
249 echo "Exporting and importing is not idempotent!"
253 echo "Marking package as failed, with newlines in the argument"
254 wanna-build -A amd64 -b amd64/build-db -m "$(echo -e "Package failed\nTo Build\n\nBadly\n \nOuch")" --failed src-b_1
255 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Failed"
257 echo "Exporting database"
258 wanna-build -A amd64 -b amd64/build-db --export $testdir/export1
260 echo "Importing database"
261 wanna-build -A amd64 -b amd64/build-db --import $testdir/export1
263 echo "Exporting database again"
264 wanna-build -A amd64 -b amd64/build-db --export $testdir/export2
266 if ! diff -q $testdir/export1 $testdir/export2
268 echo "Exporting and importing is not idempotent!"
272 echo "Giving back failed package"
273 wanna-build -A amd64 -b amd64/build-db -o --give-back src-b_1
275 echo "Giving back package agian to clear BD-Uninstallable"
276 wanna-build -A amd64 -b amd64/build-db -o --give-back src-b_1
278 echo "Taking the build"
279 wanna-build -A amd64 -b amd64/build-db --take src-b_1
280 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Building"
281 echo "Giving back the build"
282 wanna-build -A amd64 -b amd64/build-db --give-back src-b_1
283 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State .*: BD-Uninstallable"
285 echo "Running --merge-all with no changes"
286 wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources
287 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Needs-Build"
288 wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep_not "BD-Problem.*:"
290 echo "Doing a binNMU"
291 wanna-build -A amd64 -b amd64/build-db -m 'binNMU-Test' --binNMU 1 src-a_2
292 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep " State.*:.*BD-Uninstallable"
293 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep "BD-Problem.*:"
295 echo "Running --merge-all with no changes"
296 wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources
297 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep " State.*:.*Needs-Build"
298 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep "Binary-NMU-Version.*1"
300 echo "Finished sucessfully"