X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/2f91076de326a0dee067659381a9c4cf745f0efe..4ff5e237d5685be187a75c563b86e80ea3e7cc01:/test/integration/test-apt-get-install-deb diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb index c41713a92..7baaf0ee5 100755 --- a/test/integration/test-apt-get-install-deb +++ b/test/integration/test-apt-get-install-deb @@ -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' @@ -38,11 +38,18 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: foo:i386 : Conflicts: foo but 1.0 is to be installed foo : Conflicts: foo:i386 but 1.0 is to be installed -E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s -q=0 +E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s -testdpkgnotinstalled 'foo' +testdpkgnotinstalled 'foo' 'foo:i386' testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 testdpkginstalled 'foo:i386' +testfailure aptget install incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 +cd downloaded +testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --reinstall +testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output +testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --reinstall +testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output +cd .. testsuccessequal "Reading package lists... Building dependency tree... @@ -55,7 +62,24 @@ The following NEW packages will be installed: 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv foo:i386 [1.0] Inst foo (1.0 local-deb [amd64]) -Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s -q=0 +Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s + +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install --with-source ./incoming/foo_1.0_amd64.deb -s + +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + foo:i386 +The following NEW packages will be installed: + foo +0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. +Remv foo:i386 [1.0] +Inst foo (1.0 local-deb [amd64]) +Conf foo (1.0 local-deb [amd64])' aptget install --with-source ./incoming/foo_1.0_amd64.deb foo -s # Check that installing the local deb works if it is not the candidate echo "Package: foo @@ -73,7 +97,7 @@ The following NEW packages will be installed: 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv foo:i386 [1.0] Inst foo (1.0 local-deb [amd64]) -Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s -q=0 +Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s createpkg() { local PKG="pkg-$1" @@ -86,6 +110,7 @@ Version: 0 Priority: extra Maintainer: No Body Architecture: all +Depends: foo:i386 Description: test package" >> ./incoming/$PKG/DEBIAN/control if [ -n "$3" ]; then echo -n "$3" >> ./incoming/$PKG/DEBIAN/control @@ -103,3 +128,69 @@ createpkg 'trailing-newline' '' ' testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb testsuccess aptget install ./incoming/pkg-leading-newline_0_all.deb testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb + +testempty apt clean +if [ "$(id -u)" = '0' ]; then + # see if permission dropping is checked before usage + chmod 711 ./incoming + testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output + chmod 710 ./incoming + testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output + chmod 700 ./incoming + testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output + chmod 711 ./incoming +else + testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output +fi + +sed -i -e '/^Depends: foo/ d' rootdir/var/lib/dpkg/status +testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb +testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output +testsuccess apt purge -y pkg-as-it-should-be + +echo "Package: pkg-as-it-should-be +Architecture: all +Version: 0 +Installed-Size: 2903 +Filename: incoming/pkg-as-it-should-be_0_all.deb +Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.deb) +SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.deb | cut -d' ' -f 1) +" > Packages +testdpkgnotinstalled 'pkg-as-it-should-be' +testnopackage pkg-as-it-should-be +testsuccess apt install --with-source ./Packages pkg-as-it-should-be -s +testsuccess apt install --with-source ./Packages pkg-as-it-should-be --print-uris +testsuccess apt show --with-source ./Packages pkg-as-it-should-be +testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output +testsuccess apt install -y --with-source ./Packages pkg-as-it-should-be +testdpkginstalled 'pkg-as-it-should-be' +rm -f ./Packages + +echo 'dpkg::install::recursive "true"; +dpkg::install::recursive::force "true"; +dpkg::install::recursive::minimum "0";' > rootdir/etc/apt/apt.conf.d/lowerminimum.conf +mv ./incoming/pkg-as-it-should-be_0_all.deb ./incoming/pkg-as-it-should-be_0_all.ddeb +testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.ddeb --reinstall +testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output +testsuccess apt purge -y pkg-as-it-should-be +testdpkgnotinstalled 'pkg-as-it-should-be' + +mv ./incoming/pkg-as-it-should-be_0_all.ddeb ./incoming/pkg-as-it-should-be_0_all.foobar +echo "Package: pkg-as-it-should-be +Architecture: all +Version: 0 +Installed-Size: 2903 +Filename: incoming/pkg-as-it-should-be_0_all.foobar +Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.foobar) +SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.foobar | cut -d' ' -f 1) +" | gzip > Packages.gz +testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be -s +testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be --print-uris +testsuccess apt show --with-source ./Packages.gz pkg-as-it-should-be +testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output +testsuccess apt install -y --with-source ./Packages.gz pkg-as-it-should-be +testdpkginstalled 'pkg-as-it-should-be'