]> git.saurik.com Git - apt.git/blobdiff - test/test-indexes.sh
add options to disable specific checksums for Indexes
[apt.git] / test / test-indexes.sh
index 84413d2dd4e456804bc3f65b4575bcb1b62e75bc..50d54f691545f98a6290bbb11a2e0214207fef1d 100755 (executable)
@@ -21,6 +21,7 @@ DEBUG=""
 #DEBUG="-o Debug::pkgAcquire=true"
 APT_GET="$BUILDDIR/bin/apt-get $OPTS $DEBUG"
 APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG"
 #DEBUG="-o Debug::pkgAcquire=true"
 APT_GET="$BUILDDIR/bin/apt-get $OPTS $DEBUG"
 APT_CACHE="$BUILDDIR/bin/apt-cache $OPTS $DEBUG"
+APT_FTPARCHIVE="$BUILDDIR/bin/apt-ftparchive"
 
 [ -x "$BUILDDIR/bin/apt-get" ] || {
     echo "please build the tree first" >&2
 
 [ -x "$BUILDDIR/bin/apt-get" ] || {
     echo "please build the tree first" >&2
@@ -33,12 +34,16 @@ check_update() {
     rm -f etc/apt/trusted.gpg etc/apt/secring.gpg
     touch etc/apt/trusted.gpg etc/apt/secring.gpg
     find var/lib/apt/lists/ -type f | xargs -r rm
     rm -f etc/apt/trusted.gpg etc/apt/secring.gpg
     touch etc/apt/trusted.gpg etc/apt/secring.gpg
     find var/lib/apt/lists/ -type f | xargs -r rm
+
+    # 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}')
     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 -q --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
 
     # get keyring
     gpg -q --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
 
+    # now it should work
     echo "--- apt-get update $@ (with trusted keys)"
     find var/lib/apt/lists/ -type f | xargs -r rm
     $APT_GET "$@" update
     echo "--- apt-get update $@ (with trusted keys)"
     find var/lib/apt/lists/ -type f | xargs -r rm
     $APT_GET "$@" update
@@ -75,9 +80,9 @@ check_cache() {
     # again (with cache)
     $APT_CACHE show $TEST_PKG | grep -q ^Version:
     rm var/cache/apt/*.bin
     # again (with cache)
     $APT_CACHE show $TEST_PKG | grep -q ^Version:
     rm var/cache/apt/*.bin
-    $APT_CACHE policy $TEST_PKG | grep -q '500 http://'
+    $APT_CACHE policy $TEST_PKG | egrep -q '500 (http://|file:/)'
     # again (with cache)
     # again (with cache)
-    $APT_CACHE policy $TEST_PKG | grep -q '500 http://'
+    $APT_CACHE policy $TEST_PKG | egrep -q '500 (http://|file:/)'
 
     TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'`
     rm var/cache/apt/*.bin
 
     TEST_SRC=`$APT_CACHE show $TEST_PKG | grep ^Source: | awk '{print $2}'`
     rm var/cache/apt/*.bin
@@ -99,7 +104,8 @@ check_install() {
 # test apt-get source
 check_get_source() {
     echo "--- apt-get source"
 # test apt-get source
 check_get_source() {
     echo "--- apt-get source"
-    $APT_GET source $TEST_PKG
+    # quiesce: it'll complain about not being able to verify the signature
+    $APT_GET source $TEST_PKG >/dev/null 2>&1
     test -f $TEST_SRC_*.dsc
     test -d $TEST_SRC-*
     rm -r $TEST_SRC*
     test -f $TEST_SRC_*.dsc
     test -d $TEST_SRC-*
     rm -r $TEST_SRC*
@@ -126,11 +132,19 @@ echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list
 # specifying -o RootDir at the command line does not work for
 # etc/apt/apt.conf.d/ since it is parsed after pkgInitConfig(); $APT_CONFIG is
 # checked first, so this works
 # specifying -o RootDir at the command line does not work for
 # etc/apt/apt.conf.d/ since it is parsed after pkgInitConfig(); $APT_CONFIG is
 # checked first, so this works
-echo 'RootDir ".";' > apt_config
+echo "RootDir \"$WORKDIR\";" > apt_config
 export APT_CONFIG=`pwd`/apt_config
 
 export APT_CONFIG=`pwd`/apt_config
 
+echo "==== no indexes ===="
+echo '--- apt-get check works without indexes'
+[ -z `$APT_GET check` ]
+echo '--- apt-cache policy works without indexes'
+$APT_CACHE policy bash >/dev/null
+echo '--- apt-cache show works without indexes'
+! LC_MESSAGES=C $APT_CACHE show bash 2>&1| grep -q 'E: No packages found'
+
 echo "===== uncompressed indexes ====="
 echo "===== uncompressed indexes ====="
-# first attempt should fail, no trusted GPG key
+echo 'Acquire::GzipIndexes "false";' > etc/apt/apt.conf.d/02compress-indexes
 check_update
 check_indexes
 check_cache
 check_update
 check_indexes
 check_cache
@@ -147,7 +161,7 @@ $APT_GET -o Acquire::PDiffs=true update
 check_indexes
 check_cache
 
 check_indexes
 check_cache
 
-echo "===== compressed indexes ====="
+echo "===== compressed indexes (CLI option) ====="
 check_update -o Acquire::GzipIndexes=true
 check_indexes compressed
 check_cache
 check_update -o Acquire::GzipIndexes=true
 check_indexes compressed
 check_cache
@@ -164,4 +178,58 @@ $APT_GET -o Acquire::GzipIndexes=true -o Acquire::PDiffs=true update
 check_indexes compressed
 check_cache
 
 check_indexes compressed
 check_cache
 
+echo "===== compressed indexes (apt.conf.d option) ====="
+cat <<EOF > etc/apt/apt.conf.d/02compress-indexes
+Acquire::GzipIndexes "true";
+Acquire::CompressionTypes::Order:: "gz";
+EOF
+
+check_update
+check_indexes compressed
+check_cache
+check_install
+check_get_source
+
+echo "--- apt-get update with preexisting indexes"
+$APT_GET update
+check_indexes compressed
+check_cache
+
+echo "--- apt-get update with preexisting indexes and pdiff mode"
+$APT_GET -o Acquire::PDiffs=true update
+check_indexes compressed
+check_cache
+
+rm etc/apt/apt.conf.d/02compress-indexes
+
+echo "==== apt-ftparchive ===="
+mkdir arch
+$APT_GET install -d $TEST_PKG 
+cp var/cache/apt/archives/$TEST_PKG*.deb arch/
+cd arch
+$APT_GET source -d $TEST_PKG >/dev/null 2>&1
+$APT_FTPARCHIVE packages . | gzip -9 > Packages.gz
+$APT_FTPARCHIVE sources . | gzip -9 > Sources.gz
+cd ..
+
+echo "deb file://$WORKDIR/arch /
+deb-src file://$WORKDIR/arch /" > etc/apt/sources.list
+$APT_GET clean
+
+echo "==== uncompressed indexes from local file:// archive ===="
+echo "--- apt-get update"
+$APT_GET update
+check_indexes
+check_cache
+check_get_source
+
+echo "==== compressed indexes from local file:// archive ===="
+echo "--- apt-get update"
+$APT_GET -o Acquire::GzipIndexes=true update
+# EXFAIL: file:/ URIs currently decompress even with above option
+#check_indexes compressed
+check_indexes
+check_cache
+check_get_source
+
 echo "===== ALL TESTS PASSED ====="
 echo "===== ALL TESTS PASSED ====="