diff options
Diffstat (limited to 'test/integration/test-apt-get-download')
-rwxr-xr-x | test/integration/test-apt-get-download | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download new file mode 100755 index 000000000..fc0e6cfa3 --- /dev/null +++ b/test/integration/test-apt-get-download @@ -0,0 +1,113 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture "i386" +confighashes 'SHA512' + +buildsimplenativepackage 'apt' 'all' '1.0' 'stable' +buildsimplenativepackage 'apt' 'all' '2.0' 'unstable' +insertinstalledpackage 'vrms' 'all' '1.0' + +addtrap 'prefix' "umask $(umask);" +umask 0027 +setupaptarchive --no-update + +# directories should be readable by everyone +find aptarchive/dists -type d | while read dir; do + chmod o+rx "$dir" +done +# apt-ftparchive knows how to chmod files +find aptarchive/dists -name '*Packages*' -type f | while read file; do + testaccessrights "$file" '644' + chmod 640 "$file" +done +# created by the framework without special care +find aptarchive/dists -name '*Release*' -type f | while read file; do + testaccessrights "$file" '640' +done +if [ "$(id -u)" = '0' ]; then + # Release file can't be accessed by _apt + testsuccesswithnotice aptget update +fi + +#everything (too) permissive +find aptarchive/ -type f | while read file; do + chmod 777 "$file" +done +find incoming/ -type f | while read file; do + chmod 777 "$file" +done +testsuccess aptget update + +testdownload() { + local DEB="$1" + shift + msgtest "Test download of package file $DEB with" "$@" + testsuccess --nomsg aptget download "$@" -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1 + testsuccess test -f "$DEB" + testaccessrights "$DEB" '644' + rm -f "$DEB" +} + +# normal case as "root" +OLDPWD="$(pwd)" +cd downloaded +testdownload apt_2.0_all.deb apt +cd "$OLDPWD" + +# simulate normal user with non-existent root-owned directories +rm -rf rootdir/var/cache/apt/archives/ +mkdir rootdir/var/cache/apt/archives/ +addtrap 'prefix' "chmod -f -R +w $PWD/rootdir/var/cache/apt/archives || true;" +chmod -R -w rootdir/var/cache/apt/archives + +OLDPWD="$(pwd)" +cd downloaded + +# normal case(es) +testdownload apt_1.0_all.deb apt/stable +testdownload apt_2.0_all.deb apt + +DEBFILE="$(readlink -f ../aptarchive)/pool/apt_2.0_all.deb" +testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s "$DEBFILE") SHA512:$(sha512sum "$DEBFILE" | cut -d' ' -f 1)" aptget download apt --print-uris + +# deb:677887 +testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms --print-uris +testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms + +# deb:736962 +testsuccess aptget download apt +testsuccess test -s apt_2.0_all.deb +testaccessrights 'apt_2.0_all.deb' '644' +testsuccess aptget download apt +testsuccess test -s apt_2.0_all.deb +testaccessrights 'apt_2.0_all.deb' '644' + +rm -f apt_1.0_all.deb apt_2.0_all.deb + +# deb:738103 +testdownload apt_2.0_all.deb apt apt apt/unstable apt=2.0 + +# FIXME: pick up already downloaded deb files for real +# restore "root" rights +#cd "$OLDPWD" +#chmod -f -R +w "$PWD/rootdir/var/cache/apt/archives" +#rm -rf rootdir/var/cache/apt/archives/ + +# file: debs aren't copied to archives, so change to http which obviously are +#changetowebserver +#testsuccess aptget update + +# test with already stored deb +#testsuccess aptget install -d apt +#testsuccess test -s rootdir/var/cache/apt/archives/apt_2.0_all.deb +#testaccessrights 'rootdir/var/cache/apt/archives/apt_2.0_all.deb' '644' +#mv aptarchive/pool/apt_2.0_all.deb aptarchive/pool/apt_2.0_all.deb.gone +#cd downloaded +#testdownload apt_2.0_all.deb apt +#cd "$OLDPWD" +#mv aptarchive/pool/apt_2.0_all.deb.gone aptarchive/pool/apt_2.0_all.deb |