123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- #!/bin/sh
- set -e
- TESTDIR="$(readlink -f "$(dirname "$0")")"
- . "$TESTDIR/framework"
- setupenvironment
- configarchitecture 'amd64' 'i386'
- buildsimplenativepackage 'toolkit' 'all' '1' 'stable' 'Multi-Arch: foreign'
- buildsimplenativepackage 'toolkit' 'amd64' '2' 'unstable' 'Multi-Arch: foreign'
- buildsimplenativepackage 'libsame' 'i386,amd64' '1' 'stable' 'Multi-Arch: same'
- buildsimplenativepackage 'libsame' 'i386,amd64' '2' 'unstable' 'Multi-Arch: same'
- buildsimplenativepackage 'stuff' 'i386,amd64' '1' 'stable' 'Depends: libsame (= 1), toolkit (= 1)'
- buildsimplenativepackage 'stuff' 'i386,amd64' '2' 'unstable' 'Depends: libsame (= 2), toolkit (= 2)'
- setupsimplenativepackage 'confpkg' 'amd64' '1' 'unstable'
- BUILDDIR='incoming/confpkg-1'
- echo 'foo "bar";' > ${BUILDDIR}/pkg.conf
- echo 'pkg.conf /etc/pkg.conf' >> ${BUILDDIR}/debian/install
- buildpackage "$BUILDDIR" 'unstable' 'main' 'amd64'
- rm -rf "$BUILDDIR"
- setupaptarchive
- hook='pre-install-pkgs'
- enablehookversion() {
- echo "#!/bin/sh
- FD=0
- echo -n > ${hook}-v${1}.list
- if [ -n \"${2}\" ]; then
- FD=\$APT_HOOK_INFO_FD
- if [ "\$FD" != \"${2}\" ]; then echo \"ERROR: Information is not on requested FD: \$FD != ${2}\" >> ${hook}-v${1}.list; fi
- fi
- while read </dev/fd/\$FD line; do
- if echo \"\$line\" | grep -Fq '**'; then
- echo \"\$line\"
- fi
- done >> ${hook}-v${1}.list" > ${hook}-v${1}.sh
- chmod +x ${hook}-v${1}.sh
- echo "dpkg::${hook}:: \"./${hook}-v${1}.sh --foo -bar\";
- DPkg::Tools::options::\"./${hook}-v${1}.sh\"::Version \"$1\";" > rootdir/etc/apt/apt.conf.d/hook-v$1
- if [ -n "$2" ]; then
- echo "DPkg::Tools::options::\"./${hook}-v${1}.sh\"::InfoFD \"${2}\";" >> rootdir/etc/apt/apt.conf.d/hook-v$1
- fi
- }
- observehook() {
- rm -f ${hook}-v2.list ${hook}-v3.list
- msgtest 'Observe hooks while' "$*"
- testsuccess --nomsg aptget "$@" -y --allow-downgrades --planner $planner -o Debug::pkgDPkgProgressReporting=1
- # different planners have different orders – we don't care in this test here
- if [ -e ${hook}-v2.list ]; then
- sort < ${hook}-v2.list > ${hook}-v2.list.new
- mv ${hook}-v2.list.new ${hook}-v2.list
- fi
- if [ -e ${hook}-v3.list ]; then
- sort < ${hook}-v3.list > ${hook}-v3.list.new
- mv ${hook}-v3.list.new ${hook}-v3.list
- fi
- }
- testrun() {
- observehook install stuff -t stable
- testfileequal "${hook}-v2.list" 'libsame - < 1 **CONFIGURE**
- stuff - < 1 **CONFIGURE**
- toolkit - < 1 **CONFIGURE**'
- testfileequal "${hook}-v3.list" 'libsame - - none < 1 amd64 same **CONFIGURE**
- stuff - - none < 1 amd64 none **CONFIGURE**
- toolkit - - none < 1 all foreign **CONFIGURE**'
- observehook install stuff -t unstable
- testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
- stuff 1 < 2 **CONFIGURE**
- toolkit 1 < 2 **CONFIGURE**'
- testfileequal "${hook}-v3.list" 'libsame 1 amd64 same < 2 amd64 same **CONFIGURE**
- stuff 1 amd64 none < 2 amd64 none **CONFIGURE**
- toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**'
- observehook install stuff:i386 -t unstable
- testfileequal "${hook}-v2.list" 'libsame - < 2 **CONFIGURE**
- stuff - < 2 **CONFIGURE**
- stuff 2 > - **REMOVE**'
- testfileequal "${hook}-v3.list" 'libsame - - none < 2 i386 same **CONFIGURE**
- stuff - - none < 2 i386 none **CONFIGURE**
- stuff 2 amd64 none > - - none **REMOVE**'
- observehook remove libsame
- testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**'
- testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**'
- observehook install stuff:i386/stable libsame:i386/stable toolkit/stable
- testfileequal "${hook}-v2.list" 'libsame 2 > 1 **CONFIGURE**
- stuff 2 > 1 **CONFIGURE**
- toolkit 2 > 1 **CONFIGURE**'
- testfileequal "${hook}-v3.list" 'libsame 2 i386 same > 1 i386 same **CONFIGURE**
- stuff 2 i386 none > 1 i386 none **CONFIGURE**
- toolkit 2 amd64 foreign > 1 all foreign **CONFIGURE**'
- observehook install 'libsame:*'
- testfileequal "${hook}-v2.list" 'libsame - < 2 **CONFIGURE**
- libsame 1 < 2 **CONFIGURE**
- stuff 1 < 2 **CONFIGURE**
- toolkit 1 < 2 **CONFIGURE**'
- testfileequal "${hook}-v3.list" 'libsame - - none < 2 amd64 same **CONFIGURE**
- libsame 1 i386 same < 2 i386 same **CONFIGURE**
- stuff 1 i386 none < 2 i386 none **CONFIGURE**
- toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**'
- observehook purge stuff:i386 'libsame:*' toolkit
- testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**
- libsame 2 > - **REMOVE**
- stuff 2 > - **REMOVE**
- toolkit 2 > - **REMOVE**'
- testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**
- libsame 2 i386 same > - - none **REMOVE**
- stuff 2 i386 none > - - none **REMOVE**
- toolkit 2 amd64 foreign > - - none **REMOVE**'
- observehook install confpkg
- testfileequal "${hook}-v2.list" 'confpkg - < 1 **CONFIGURE**'
- testfileequal "${hook}-v3.list" 'confpkg - - none < 1 amd64 none **CONFIGURE**'
- observehook remove confpkg
- testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**'
- testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**'
- msgtest 'Conffiles of package remained after remove' 'confpkg'
- dpkg -l confpkg | grep -q '^rc' && msgpass || msgfail
- observehook purge confpkg
- testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**'
- testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**'
- msgtest 'Conffiles are gone after purge' 'confpkg'
- dpkg -l confpkg 2>/dev/null | grep -q '^rc' && msgfail || msgpass
- }
- runwithplanner()
- {
- msgmsg 'Running with planner' "$1"
- planner="$1"
- enablehookversion 2
- enablehookversion 3
- testrun
- enablehookversion 2 13
- enablehookversion 3 13
- testrun
- }
- runwithplanner 'apt'
|