X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tests%2Ftests.sh;h=76597eb6d621ab0215d2d21ef5e5c53b6a449cf7;hb=ecdd3ec8d7247cb92defb0f071114eb295611196;hp=311963ad5bda04fbd3e1562e9dc065b4501147e5;hpb=e5ca5ee4c1fcff74c85724037b349c746c8902d7;p=wannabuild.git diff --git a/tests/tests.sh b/tests/tests.sh index 311963a..76597eb 100755 --- a/tests/tests.sh +++ b/tests/tests.sh @@ -36,6 +36,18 @@ function assert_grep { fi } +function assert_grep_not { + cat > $testdir/assert_grep + if grep -q "$1" $testdir/assert_grep + then + echo "Could find unexpected \"$1\" in:" + cat $testdir/assert_grep + # We are in a pipe, i.e. a subshell, so kill the parent + kill -TERM $parent_pid + exit 1 + fi +} + cd "$(dirname $0)"/.. assert "[ -e bin/wanna-build ]" @@ -59,6 +71,7 @@ cat > $testdir/wanna-build.conf <<__END__ \$quinn_source = "$testdir/quinn-diff-output"; \$quinn_source_multi_section = 0; @admin_users = qw(wbadm $USER); +\$mailprog = "/bin/true"; %distributions = ( "unstable" => { }, ); @@ -72,7 +85,7 @@ mkdir $testdir/db/amd64; function wanna-build { # Here we make sure that the "require /etc/wanan-build.conf" does not # have effect, and load our own file instead. - echo "Executing wanna-build" "$@" >&2 + #echo "Executing wanna-build" "$@" >&2 export PERL5LIB=/home/jojo/debian/wanna-build/testsetup/bin perl -e ' package conf; @@ -91,25 +104,25 @@ function wanna-build { wanna-build -A amd64 -b amd64/build-db --create-db --info no-package-1.2.3 echo Load some sources -wanna-build -A amd64 -b amd64/build-db --merge-all <(cat <<__END__ + +cat > $testdir/Packages <<__END__ Package: bin-a-indep Version: 1 Architecture: all Source: src-a __END__ -) <( cat <<__END__ +cat > $testdir/quinn-diff <<__END__ misc/src-a_1.dsc [optional:uncompiled] __END__ -) <( cat <<__END__ +cat > $testdir/Sources <<__END__ Package: src-a Version: 1 Architecture: any Section: misc Priority: standard -Build-Depends: compiler Binary: bin-a-indep,bin-a-1 __END__ -) +wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources # Test that they exist are in state Needs-Build wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State.*: Needs-Build' @@ -123,7 +136,7 @@ wanna-build -A amd64 -b amd64/build-db --uploaded src-a_1 wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State.*: Uploaded' echo Load the binaries for the sources -wanna-build -A amd64 -b amd64/build-db --merge-all <(cat <<__END__ +cat > $testdir/Packages <<__END__ Package: bin-a-indep Version: 1 Architecture: all @@ -134,24 +147,23 @@ Version: 1 Architecture: amd64 Source: src-a __END__ -) <( cat <<__END__ +cat > $testdir/quinn-diff <<__END__ __END__ -) <( cat <<__END__ +cat > $testdir/Sources <<__END__ Package: src-a Version: 1 Architecture: any Section: misc Priority: standard -Build-Depends: compiler Binary: bin-a-indep,bin-a-1 __END__ -) +wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources # Test that they exist are in state Needs-Build wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep ' State .*: Installed' echo Upload another source that needs bin-a-1 in Version 2 -wanna-build -A amd64 -b amd64/build-db --merge-all <(cat <<__END__ +cat > $testdir/Packages <<__END__ Package: bin-a-indep Version: 1 Architecture: all @@ -162,16 +174,15 @@ Version: 1 Architecture: amd64 Source: src-a __END__ -) <( cat <<__END__ +cat > $testdir/quinn-diff <<__END__ misc/src-b_1.dsc [optional:uncompiled] __END__ -) <( cat <<__END__ +cat > $testdir/Sources <<__END__ Package: src-a Version: 1 Architecture: any Section: misc Priority: standard -Build-Depends: compiler Binary: bin-a-indep,bin-a-1 Package: src-b @@ -182,12 +193,14 @@ Priority: standard Build-Depends: bin-a-1 (>= 2) Binary: bin-b __END__ -) +wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep "bin-a-1 (>= 2)" +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State .*: BD-Uninstallable" +wanna-build -A amd64 -b amd64/build-db --list bd-uninstallable | assert_grep "src-b" echo Uploading the new source with an updated binary package -wanna-build -A amd64 -b amd64/build-db --merge-all <(cat <<__END__ +cat > $testdir/Packages <<__END__ Package: bin-a-indep Version: 2 Architecture: all @@ -198,18 +211,16 @@ Version: 2 Architecture: amd64 Source: src-a __END__ -) <( cat <<__END__ -misc/src-a_1.dsc [optional:uncompiled] +cat > $testdir/quinn-diff <<__END__ misc/src-b_1.dsc [optional:uncompiled] __END__ -) <( cat <<__END__ +cat > $testdir/Sources <<__END__ Package: src-a -Version: 1 +Version: 2 Architecture: any Section: misc Priority: standard -Build-Depends: compiler -Binary: bin-a-indep,bin-a-1,bin-a-2 +Binary: bin-a-indep,bin-a-1 Package: src-b Version: 1 @@ -219,8 +230,71 @@ Priority: standard Build-Depends: bin-a-1 (>= 2) Binary: bin-b __END__ -) +wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources + +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Needs-Build" +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep_not "BD-Problem.*:" + +echo "Exporting database" +wanna-build -A amd64 -b amd64/build-db --export $testdir/export1 + +echo "Importing database" +wanna-build -A amd64 -b amd64/build-db --import $testdir/export1 + +echo "Exporting database again" +wanna-build -A amd64 -b amd64/build-db --export $testdir/export2 + +if ! diff -q $testdir/export1 $testdir/export2 +then + echo "Exporting and importing is not idempotent!" + exit 1 +fi + +echo "Marking package as failed, with newlines in the argument" +wanna-build -A amd64 -b amd64/build-db -m "$(echo -e "Package failed\nTo Build\n\nBadly\n \nOuch")" --failed src-b_1 +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Failed" + +echo "Exporting database" +wanna-build -A amd64 -b amd64/build-db --export $testdir/export1 + +echo "Importing database" +wanna-build -A amd64 -b amd64/build-db --import $testdir/export1 + +echo "Exporting database again" +wanna-build -A amd64 -b amd64/build-db --export $testdir/export2 + +if ! diff -q $testdir/export1 $testdir/export2 +then + echo "Exporting and importing is not idempotent!" + exit 1 +fi + +echo "Giving back failed package" +wanna-build -A amd64 -b amd64/build-db -o --give-back src-b_1 + +echo "Giving back package agian to clear BD-Uninstallable" +wanna-build -A amd64 -b amd64/build-db -o --give-back src-b_1 + +echo "Taking the build" +wanna-build -A amd64 -b amd64/build-db --take src-b_1 +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Building" +echo "Giving back the build" +wanna-build -A amd64 -b amd64/build-db --give-back src-b_1 +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State .*: BD-Uninstallable" + +echo "Running --merge-all with no changes" +wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep " State.*:.*Needs-Build" +wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep_not "BD-Problem.*:" + +echo "Doing a binNMU" +wanna-build -A amd64 -b amd64/build-db -m 'binNMU-Test' --binNMU 1 src-a_2 +wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep " State.*:.*BD-Uninstallable" +wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep "BD-Problem.*:" -wanna-build -A amd64 -b amd64/build-db --info src-b | assert_grep "State.*:.*Needs-Build" +echo "Running --merge-all with no changes" +wanna-build -A amd64 -b amd64/build-db --merge-all $testdir/Packages $testdir/quinn-diff $testdir/Sources +wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep " State.*:.*Needs-Build" +wanna-build -A amd64 -b amd64/build-db --info src-a | assert_grep "Binary-NMU-Version.*1" echo "Finished sucessfully"