]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
refactor EDSP classes for better internal reuse
[apt.git] / test / integration / test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
index a89cb7191260a87c17a404fb290905be0aaf7ae8..a15ac06edcbfa233adeb5b5ce77a03439ef0aece 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
 setupenvironment
 configarchitecture 'amd64' 'i386'
 
@@ -26,95 +26,111 @@ hook='pre-install-pkgs'
 
 enablehookversion() {
        echo "#!/bin/sh
-while read line; do
+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 </proc/\$\$/fd/\$FD line; do
        if echo \"\$line\" | grep -Fq '**'; then
                echo \"\$line\"
        fi
-done > ${hook}-v${1}.list" > ${hook}-v${1}.sh
+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
 }
 
-enablehookversion 2
-enablehookversion 3
-
 observehook() {
        rm -f ${hook}-v2.list ${hook}-v3.list
        msgtest 'Observe hooks while' "$*"
-       aptget "$@" -y --force-yes >/dev/null 2>&1 && msgpass || msgfail
+       testsuccess --nomsg aptget "$@" -y --allow-downgrades
 }
 
-observehook install stuff -t stable
-testfileequal "${hook}-v2.list" 'libsame - < 1 **CONFIGURE**
+testrun() {
+       observehook install stuff -t stable
+       testfileequal "${hook}-v2.list" 'libsame - < 1 **CONFIGURE**
 toolkit - < 1 **CONFIGURE**
 stuff - < 1 **CONFIGURE**'
-testfileequal "${hook}-v3.list" 'libsame - - none < 1 amd64 same **CONFIGURE**
+       testfileequal "${hook}-v3.list" 'libsame - - none < 1 amd64 same **CONFIGURE**
 toolkit - - none < 1 all foreign **CONFIGURE**
 stuff - - none < 1 amd64 none **CONFIGURE**'
 
-observehook install stuff -t unstable
-testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
+       observehook install stuff -t unstable
+       testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
 toolkit 1 < 2 **CONFIGURE**
 stuff 1 < 2 **CONFIGURE**'
-testfileequal "${hook}-v3.list" 'libsame 1 amd64 same < 2 amd64 same **CONFIGURE**
+       testfileequal "${hook}-v3.list" 'libsame 1 amd64 same < 2 amd64 same **CONFIGURE**
 toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**
 stuff 1 amd64 none < 2 amd64 none **CONFIGURE**'
 
-observehook install stuff:i386 -t unstable
-testfileequal "${hook}-v2.list" 'stuff 2 > - **REMOVE**
+       observehook install stuff:i386 -t unstable
+       testfileequal "${hook}-v2.list" 'stuff 2 > - **REMOVE**
 libsame - < 2 **CONFIGURE**
 stuff - < 2 **CONFIGURE**'
-testfileequal "${hook}-v3.list" 'stuff 2 amd64 none > - - none **REMOVE**
+       testfileequal "${hook}-v3.list" 'stuff 2 amd64 none > - - none **REMOVE**
 libsame - - none < 2 i386 same **CONFIGURE**
 stuff - - none < 2 i386 none **CONFIGURE**'
 
-observehook remove libsame
-testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**'
-testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - 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**
+       observehook install stuff:i386/stable libsame:i386/stable toolkit/stable
+       testfileequal "${hook}-v2.list" 'libsame 2 > 1 **CONFIGURE**
 toolkit 2 > 1 **CONFIGURE**
 stuff 2 > 1 **CONFIGURE**'
-testfileequal "${hook}-v3.list" 'libsame 2 i386 same > 1 i386 same **CONFIGURE**
+       testfileequal "${hook}-v3.list" 'libsame 2 i386 same > 1 i386 same **CONFIGURE**
 toolkit 2 amd64 foreign > 1 all foreign **CONFIGURE**
 stuff 2 i386 none > 1 i386 none **CONFIGURE**'
 
-observehook install 'libsame:*'
-testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
+       observehook install 'libsame:*'
+       testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
 libsame - < 2 **CONFIGURE**
 toolkit 1 < 2 **CONFIGURE**
 stuff 1 < 2 **CONFIGURE**'
-testfileequal "${hook}-v3.list" 'libsame 1 i386 same < 2 i386 same **CONFIGURE**
+       testfileequal "${hook}-v3.list" 'libsame 1 i386 same < 2 i386 same **CONFIGURE**
 libsame - - none < 2 amd64 same **CONFIGURE**
 toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**
 stuff 1 i386 none < 2 i386 none **CONFIGURE**'
 
-observehook purge stuff:i386 'libsame:*' toolkit
-testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**
+       observehook purge stuff:i386 'libsame:*' toolkit
+       testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**
 stuff 2 > - **REMOVE**
 libsame 2 > - **REMOVE**
 toolkit 2 > - **REMOVE**'
-testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**
+       testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**
 stuff 2 i386 none > - - none **REMOVE**
 libsame 2 i386 same > - - 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 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**'
 
-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
 
-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**'
 
-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
+}
+
+enablehookversion 2
+enablehookversion 3
+testrun
 
-msgtest 'Conffiles are gone after purge' 'confpkg'
-dpkg -l confpkg 2>/dev/null | grep -q '^rc' && msgfail || msgpass
+enablehookversion 2 13
+enablehookversion 3 13
+testrun