#!/bin/sh set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture "i386" buildaptarchive touch aptarchive/Packages setupflataptarchive testaptgetupdate() { rm -rf rootdir/var/lib/apt aptget update >testaptgetupdate.diff 2>&1 || true sed -i -e '/Ign /,+1d' -e '/Release/ d' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff GIVEN="$1" shift msgtest "Test for correctness of" "apt-get update with $*" if [ -z "$GIVEN" ]; then echo -n "" | checkdiff - testaptgetupdate.diff && msgpass || msgfail else echo "$GIVEN" | checkdiff - testaptgetupdate.diff && msgpass || msgfail fi rm testaptgetupdate.diff } createemptyarchive() { find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete touch aptarchive/Packages echo -n "" | $COMPRESSOR_CMD > aptarchive/${1}.$COMPRESS generatereleasefiles signreleasefiles rm -f aptarchive/Packages } createemptyfile() { find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete touch aptarchive/Packages aptarchive/${1}.$COMPRESS generatereleasefiles signreleasefiles rm -f aptarchive/Packages } testoverfile() { local APTARCHIVE="$(readlink -f ./aptarchive)" forcecompressor "$1" createemptyarchive 'Packages' testaptgetupdate "Get:2 file:$APTARCHIVE Packages [] Reading package lists..." "empty archive Packages.$COMPRESS over file" createemptyfile 'Packages' testaptgetupdate "Get:2 file:$APTARCHIVE Packages Err:2 file:$APTARCHIVE Packages Empty files can't be valid archives Reading package lists... W: Failed to fetch ${COMPRESSOR}:${APTARCHIVE}/Packages.$COMPRESS Empty files can't be valid archives E: Some index files failed to download. They have been ignored, or old ones used instead." "empty file Packages.$COMPRESS over file" } testoverhttp() { forcecompressor "$1" createemptyarchive 'Packages' testaptgetupdate "Get:2 http://localhost:${APTHTTPPORT} Packages [] Reading package lists..." "empty archive Packages.$COMPRESS over http" createemptyfile 'Packages' #FIXME: we should response with a good error message instead testaptgetupdate "Get:2 http://localhost:${APTHTTPPORT} Packages Err:2 http://localhost:${APTHTTPPORT} Packages Empty files can't be valid archives Reading package lists... W: Failed to fetch ${COMPRESSOR}:$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_Packages.${COMPRESS}) Empty files can't be valid archives E: Some index files failed to download. They have been ignored, or old ones used instead." "empty file Packages.$COMPRESS over http" } for COMPRESSOR in 'gzip' 'bzip2' 'lzma' 'xz'; do testoverfile $COMPRESSOR; done # do the same again with http instead of file changetowebserver for COMPRESSOR in 'gzip' 'bzip2' 'lzma' 'xz'; do testoverhttp $COMPRESSOR; done