BUILDDIR=$(readlink -f $(dirname $0)/../build)
-TEST_SOURCE="deb http://ftp.debian.org/debian unstable contrib"
-TEST_SOURCE_KEYID=55BE302B
+TEST_SOURCE="http://ftp.debian.org/debian unstable contrib"
GPG_KEYSERVER=gpg-keyserver.de
# should be a small package with dependencies satisfiable in TEST_SOURCE, i. e.
# ideally no depends at all
exit 1
}
+# if $1 == "compressed", check that we have compressed indexes, otherwise
+# uncompressed ones
+check_indexes() {
+ local F
+ if [ "$1" = "compressed" ]; then
+ ! test -e var/lib/apt/lists/*_Packages || F=1
+ ! test -e var/lib/apt/lists/*_Sources || F=1
+ test -e var/lib/apt/lists/*_Packages.gz || F=1
+ test -e var/lib/apt/lists/*_Sources.gz || F=1
+ else
+ test -e var/lib/apt/lists/*_Packages || F=1
+ test -e var/lib/apt/lists/*_Sources || F=1
+ ! test -e var/lib/apt/lists/*_Packages.gz || F=1
+ ! test -e var/lib/apt/lists/*_Sources.gz || F=1
+ fi
+
+ if [ -n "$F" ]; then
+ ls -l var/lib/apt/lists/
+ exit 1
+ fi
+}
+
echo "---- building sandbox----"
WORKDIR=$(mktemp -d)
trap "cd /; rm -rf $WORKDIR" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
mkdir -p etc/apt/preferences.d etc/apt/trusted.gpg.d var/cache/apt/archives/partial var/lib/apt/lists/partial var/lib/dpkg
cp /etc/apt/trusted.gpg etc/apt
touch var/lib/dpkg/status
-echo "$TEST_SOURCE" > etc/apt/sources.list
-
-# get keyring
-gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $TEST_SOURCE_KEYID
+echo "deb $TEST_SOURCE" > etc/apt/sources.list
+echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list
echo "---- uncompressed update ----"
+# first attempt should fail, no trusted GPG key
+out=$($APT_GET update 2>&1)
+echo "$out" | grep -q NO_PUBKEY
+key=$(echo "$out" | sed -n '/NO_PUBKEY/ { s/^.*NO_PUBKEY \([[:alnum:]]\+\)$/\1/; p}')
+# get keyring
+gpg --no-options --no-default-keyring --secret-keyring etc/apt/secring.gpg --trustdb-name etc/apt/trustdb.gpg --keyring etc/apt/trusted.gpg --primary-keyring etc/apt/trusted.gpg --keyserver $GPG_KEYSERVER --recv-keys $key
$APT_GET update
-test -e var/lib/apt/lists/*_Packages
-! test -e var/lib/apt/lists/*_Packages.gz
+check_indexes
echo "---- uncompressed cache ----"
$APT_CACHE show $TEST_PKG | grep -q ^Version:
# again (with cache)
$APT_CACHE policy $TEST_PKG | grep -q '500 http://'
+TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'`
+rm var/cache/apt/*.bin
+$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary:
+# again (with cache)
+$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary:
+
echo "---- uncompressed install ----"
$APT_GET install -d $TEST_PKG
test -e var/cache/apt/archives/$TEST_PKG*.deb
$APT_GET clean
! test -e var/cache/apt/archives/$TEST_PKG*.deb
+echo "---- uncompressed get source ----"
+$APT_GET source $TEST_PKG
+test -f $TEST_SRC_*.dsc
+test -d $TEST_SRC-*
+rm -r $TEST_SRC*
+
echo "----- uncompressed update with preexisting indexes, no pdiff ----"
$APT_GET -o Acquire::PDiffs=false update
-test -e var/lib/apt/lists/*_Packages
-! test -e var/lib/apt/lists/*_Packages.gz
+check_indexes
echo "----- uncompressed update with preexisting indexes, with pdiff ----"
$APT_GET -o Acquire::PDiffs=true update
-test -e var/lib/apt/lists/*_Packages
-! test -e var/lib/apt/lists/*_Packages.gz
+check_indexes
echo "----- compressed update ----"
find var/lib/apt/lists/ -type f | xargs -r rm
$APT_GET -o Acquire::GzipIndexes=true update
-! test -e var/lib/apt/lists/*_Packages
-test -e var/lib/apt/lists/*_Packages.gz
+check_indexes compressed
echo "---- compressed cache ----"
$APT_CACHE show $TEST_PKG | grep -q ^Version:
# again (with cache)
$APT_CACHE policy $TEST_PKG | grep -q '500 http://'
+TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'`
+rm var/cache/apt/*.bin
+$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary:
+# again (with cache)
+$APT_CACHE showsrc $TEST_SRC | grep -q ^Binary:
+
echo "---- compressed install ----"
$APT_GET install -d $TEST_PKG
! test -e var/cache/apt/archives/$TEST_PKG*.deb
+echo "---- compressed get source ----"
+$APT_GET source $TEST_PKG
+test -f $TEST_SRC_*.dsc
+test -d $TEST_SRC-*
+rm -r $TEST_SRC*
+
echo "----- compressed update with preexisting indexes, no pdiff ----"
$APT_GET -o Acquire::PDiffs=false -o Acquire::GzipIndexes=true update
-! test -e var/lib/apt/lists/*_Packages
-test -e var/lib/apt/lists/*_Packages.gz
+check_indexes compressed
echo "----- compressed update with preexisting indexes, with pdiff ----"
$APT_GET -o Acquire::PDiffs=true -o Acquire::GzipIndexes=true update
-! test -e var/lib/apt/lists/*_Packages
-test -e var/lib/apt/lists/*_Packages.gz
+check_indexes compressed
echo "---- ALL TESTS PASSED ----"