diff options
Diffstat (limited to 'test/integration/test-bug-661537-build-profiles-support')
-rwxr-xr-x | test/integration/test-bug-661537-build-profiles-support | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/test/integration/test-bug-661537-build-profiles-support b/test/integration/test-bug-661537-build-profiles-support new file mode 100755 index 000000000..d24484de9 --- /dev/null +++ b/test/integration/test-bug-661537-build-profiles-support @@ -0,0 +1,161 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' 'i386' 'armel' + +insertinstalledpackage 'build-essential' 'all' '0' 'Multi-Arch: foreign' + +insertpackage 'unstable' 'foo' 'all' '1.0' +insertpackage 'unstable' 'bar' 'all' '1.0' + +insertsource 'unstable' 'buildprofiles' 'any' '1' 'Build-Depends: foo (>= 1.0) [i386 arm] <!stage1 !cross>, bar' + +# table from https://wiki.debian.org/BuildProfileSpec +insertsource 'unstable' 'spec-1' 'any' '1' 'Build-Depends: foo <!stage1>' +insertsource 'unstable' 'spec-2' 'any' '1' 'Build-Depends: foo <stage1>' +insertsource 'unstable' 'spec-3' 'any' '1' 'Build-Depends: foo <!stage1 !notest>' +insertsource 'unstable' 'spec-4' 'any' '1' 'Build-Depends: foo <stage1 notest>' +insertsource 'unstable' 'spec-5' 'any' '1' 'Build-Depends: foo <!stage1 notest>' +insertsource 'unstable' 'spec-6' 'any' '1' 'Build-Depends: foo <stage1 !notest>' +insertsource 'unstable' 'spec-7' 'any' '1' 'Build-Depends: foo <stage1> <!notest>' + +setupaptarchive + +testsuccessequal 'Reading package lists... +Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + bar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst bar (1.0 unstable [all]) +Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s + +testsuccessequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + bar foo +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst bar (1.0 unstable [all]) +Inst foo (1.0 unstable [all]) +Conf bar (1.0 unstable [all]) +Conf foo (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386 + +testsuccessequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + bar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst bar (1.0 unstable [all]) +Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=armel + +testsuccessequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + bar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst bar (1.0 unstable [all]) +Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386 -P stage1 + +KEEP='Reading package lists... +Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + foo +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foo (1.0 unstable [all]) +Conf foo (1.0 unstable [all])' +setdrop() { + DROP="Reading package lists... +$1 has no build depends. +Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." +} + +msgtest 'Check if version of installed dpkg is high enough for' 'build profiles support' +if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.17.14'; then + msgpass + testwithdpkg() { + msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'" + local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwithdpkg.output" + if dpkgcheckbuilddeps -d "$1" -P "$2" /dev/null >$OUTPUT 2>&1; then + if [ "$3" = "$DROP" ]; then + msgpass + else + cat $OUTPUT + msgfail + fi + else + if [ "$3" = "$KEEP" ]; then + msgpass + else + cat $OUTPUT + msgfail + fi + fi + } +else + msgskip + testwithdpkg() { + msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'" + msgskip + } +fi + +testprofile() { + if [ -n "$3" ]; then + testequal "$4" aptget build-dep "$1" -s -P "$3" + export DEB_BUILD_PROFILES="$(echo "$3" | tr ',' ' ')" + testequal "$4" aptget build-dep "$1" -s -o with::environment=1 + unset DEB_BUILD_PROFILES + else + testequal "$4" aptget build-dep "$1" -s + fi + testwithdpkg "$2" "$3" "$4" +} + +testsuccess aptcache gencaches +setdrop 'spec-1' +testprofile 'spec-1' 'foo <!stage1>' '' "$KEEP" +testprofile 'spec-1' 'foo <!stage1>' 'stage1' "$DROP" +testprofile 'spec-1' 'foo <!stage1>' 'notest' "$KEEP" +testprofile 'spec-1' 'foo <!stage1>' 'stage1,notest' "$DROP" + +setdrop 'spec-2' +testprofile 'spec-2' 'foo <stage1>' '' "$DROP" +testprofile 'spec-2' 'foo <stage1>' 'stage1' "$KEEP" +testprofile 'spec-2' 'foo <stage1>' 'notest' "$DROP" +testprofile 'spec-2' 'foo <stage1>' 'stage1,notest' "$KEEP" + +setdrop 'spec-3' +testprofile 'spec-3' 'foo <!stage1 !notest>' '' "$KEEP" +testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1' "$DROP" +testprofile 'spec-3' 'foo <!stage1 !notest>' 'notest' "$DROP" +testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1,notest' "$DROP" + +setdrop 'spec-4' +testprofile 'spec-4' 'foo <stage1 notest>' '' "$DROP" +testprofile 'spec-4' 'foo <stage1 notest>' 'stage1' "$DROP" +testprofile 'spec-4' 'foo <stage1 notest>' 'notest' "$DROP" +testprofile 'spec-4' 'foo <stage1 notest>' 'stage1,notest' "$KEEP" + +setdrop 'spec-5' +testprofile 'spec-5' 'foo <!stage1 notest>' '' "$DROP" +testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1' "$DROP" +testprofile 'spec-5' 'foo <!stage1 notest>' 'notest' "$KEEP" +testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1,notest' "$DROP" + +setdrop 'spec-6' +testprofile 'spec-6' 'foo <stage1 !notest>' '' "$DROP" +testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1' "$KEEP" +testprofile 'spec-6' 'foo <stage1 !notest>' 'notest' "$DROP" +testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1,notest' "$DROP" + +setdrop 'spec-7' +testprofile 'spec-7' 'foo <stage1> <!notest>' '' "$KEEP" +testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1' "$KEEP" +testprofile 'spec-7' 'foo <stage1> <!notest>' 'notest' "$DROP" +testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1,notest' "$KEEP" |