]> git.saurik.com Git - apt.git/blobdiff - test/test-indexes.sh
test-indexes.sh: More verbose failures on wrong/missing indexes
[apt.git] / test / test-indexes.sh
index d3f5e7cd366ca32ead4f110a63fe46047de77eb5..d79e9e7e4575a685e2fdf514948375aa77d4e75a 100755 (executable)
@@ -7,8 +7,7 @@
 
 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
@@ -28,6 +27,28 @@ APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG"
     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
@@ -39,15 +60,18 @@ ln -s /home home
 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:
@@ -58,27 +82,36 @@ $APT_CACHE policy $TEST_PKG | grep -q '500 http://'
 # 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:
@@ -89,18 +122,28 @@ $APT_CACHE policy $TEST_PKG | grep -q '500 http://'
 # 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 ----"