1
0
Fork 0
apt/test/integration/test-apt-ftparchive-by-hash
Daniel Baumann 6810ba718b
Adding upstream version 3.0.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-20 21:10:43 +02:00

70 lines
2.1 KiB
Bash
Executable file

#!/bin/sh
set -e
verify_by_hash() {
for hash_gen in SHA256:sha256sum SHA512:sha512sum; do
hash=$(echo ${hash_gen} | cut -f1 -d:)
gen=$(echo ${hash_gen} | cut -f2 -d:)
testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages.gz | cut -f1 -d' ')
done
}
#
# main()
#
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'i386'
configcompression 'gz' '.'
confighashes 'SHA256' 'SHA512'
# enable by-hash in apt-ftparchive
echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf
# build one package
buildsimplenativepackage 'foo' 'i386' '1' 'unstable'
buildaptarchivefromincoming
# verify initial run
verify_by_hash
previous_hash=$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
# insert new package
buildsimplenativepackage 'bar' 'i386' '1' 'unstable'
# and build again
buildaptarchivefromincoming
# ensure the new package packag is there
testsuccess zgrep "Package: bar" aptarchive/dists/unstable/main/binary-i386/Packages.gz
# ensure we have the by-hash stuff
verify_by_hash
# ensure the old hash is still there
testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/$previous_hash
# ensure we have it in the Release file
testsuccess grep "Acquire-By-Hash: yes" aptarchive/dists/unstable/*Release
# now ensure gc work
for i in $(seq 3); do
buildsimplenativepackage 'bar' 'i386' "$i" 'unstable'
buildaptarchivefromincoming
done
hash_count=$(ls aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/|wc -l)
# we have 2 files (uncompressed, gz) per run, 5 runs in total
# by default apt-ftparchive keeps three generations (current plus 2 older)
msgtest "Check that gc for by-hash works… "
if [ "$hash_count" = "6" ]; then
msgpass
else
echo "Got $hash_count expected 6"
msgfail
fi
# ensure the current generation is still there
verify_by_hash