From c5ede4cac6e6496ce19ccea3313ac6b49ba5e8d6 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 13 Sep 2015 17:25:23 +0200 Subject: tests: use SHA1 checksum only by default in tests This is mostly a small speedup for the testcases, but it is also handy to document which tests actually deal with a specific hash compared to those which 'just' need some hash which can be important while adding new hashes. Git-Dch: Ignore --- test/integration/framework | 76 +++++++++++----------- test/integration/test-apt-by-hash-update | 1 + test/integration/test-apt-ftparchive-by-hash | 1 + .../test-apt-ftparchive-cachedb-lp1274466 | 1 + test/integration/test-apt-ftparchive-src-cachedb | 1 + test/integration/test-apt-get-download | 1 + test/integration/test-apt-update-file | 1 + test/integration/test-pdiff-usage | 1 + .../test-ubuntu-bug-1078697-missing-source-hashes | 11 ++-- 9 files changed, 52 insertions(+), 42 deletions(-) diff --git a/test/integration/framework b/test/integration/framework index 322c74a21..c830d852b 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -368,6 +368,7 @@ EOF echo "Acquire::https::CaInfo \"${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem\";" > rootdir/etc/apt/apt.conf.d/99https echo "Apt::Cmd::Disable-Script-Warning \"1\";" > rootdir/etc/apt/apt.conf.d/apt-binary configcompression '.' 'gz' #'bz2' 'lzma' 'xz' + confighashes 'SHA1' # these are tests, not security best-practices # create some files in /tmp and look at user/group to get what this means TEST_DEFAULT_USER="$USER" @@ -513,7 +514,22 @@ configcompression() { shift done > ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf } - +confighashes() { + { + echo 'APT::FTPArchive {' + { + while [ -n "$1" ]; do + printf "$1" | tr 'a-z' 'A-Z' + printf "\t\"true\";\n" + shift + done + for h in 'MD5' 'SHA1' 'SHA256' 'SHA512'; do + printf "$h\t\"false\";\n" + done + } | awk '!x[$1]++' + echo '};' + } >> "${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/ftparchive-hashes.conf" +} forcecompressor() { COMPRESSOR="$1" COMPRESSOR_CMD="$1" @@ -734,41 +750,24 @@ createaptftparchiveconfig() { local COMPRESSORS="$(cut -d' ' -f 1 ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf | tr '\n' ' ')" local COMPRESSORS="${COMPRESSORS%* }" local ARCHS="$(getarchitectures)" - echo -n 'Dir { - ArchiveDir "' >> ftparchive.conf - echo -n $(readlink -f .) >> ftparchive.conf - echo -n '"; - CacheDir "' >> ftparchive.conf - echo -n $(readlink -f ..) >> ftparchive.conf - echo -n '"; - FileListDir "' >> ftparchive.conf - echo -n $(readlink -f pool/) >> ftparchive.conf - echo -n '"; + cat > ftparchive.conf <> ftparchive.conf - echo -n "$ARCHS" >> ftparchive.conf - echo 'source"; - }; - }; -};' >> ftparchive.conf +EOF for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do echo -n 'tree "dists/' >> ftparchive.conf echo -n "$DIST" >> ftparchive.conf @@ -968,6 +967,9 @@ getreleaseversionfromsuite() { true; } getlabelfromsuite() { true; } getoriginfromsuite() { true; } +aptftparchiverelease() { + aptftparchive -qq release "$@" | sed -e '/0 Release$/ d' # remove the self reference +} generatereleasefiles() { # $1 is the Date header and $2 is the ValidUntil header to be set # both should be given in notation date/touch can understand @@ -988,33 +990,31 @@ generatereleasefiles() { if [ -n "$ORIGIN" ]; then ORIGIN="-o APT::FTPArchive::Release::Origin=${ORIGIN}" fi - aptftparchive -qq release $dir \ + aptftparchiverelease $dir \ -o APT::FTPArchive::Release::Suite="${SUITE}" \ -o APT::FTPArchive::Release::Codename="${CODENAME}" \ ${LABEL} \ ${ORIGIN} \ ${VERSION} \ - | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference + > $dir/Release if [ "$SUITE" = "experimental" -o "$SUITE" = "experimental2" ]; then sed -i '/^Date: / a\ NotAutomatic: yes' $dir/Release fi - if [ -n "$1" -a "$1" != "now" ]; then - sed -i "s/^Date: .*$/Date: $(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')/" $dir/Release - fi - if [ -n "$2" ]; then - sed -i "/^Date: / a\ -Valid-Until: $(date -d "$2" '+%a, %d %b %Y %H:%M:%S %Z')" $dir/Release - fi done else - aptftparchive -qq release ./aptarchive | sed -e '/0 Release$/ d' > aptarchive/Release # remove the self reference + aptftparchiverelease ./aptarchive > aptarchive/Release fi if [ -n "$1" -a "$1" != "now" ]; then for release in $(find ./aptarchive -name 'Release'); do + sed -i "s/^Date: .*$/Date: $(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')/" $release touch -d "$1" $release done fi + if [ -n "$2" ]; then + sed -i "/^Date: / a\ +Valid-Until: $(date -d "$2" '+%a, %d %b %Y %H:%M:%S %Z')" $(find ./aptarchive -name 'Release') + fi msgdone "info" } diff --git a/test/integration/test-apt-by-hash-update b/test/integration/test-apt-by-hash-update index cef46a1b8..293836861 100755 --- a/test/integration/test-apt-by-hash-update +++ b/test/integration/test-apt-by-hash-update @@ -6,6 +6,7 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture "i386" +confighashes 'SHA512' insertpackage 'unstable' 'foo' 'all' '1.0' diff --git a/test/integration/test-apt-ftparchive-by-hash b/test/integration/test-apt-ftparchive-by-hash index f00e2a24c..ca881ed81 100755 --- a/test/integration/test-apt-ftparchive-by-hash +++ b/test/integration/test-apt-ftparchive-by-hash @@ -18,6 +18,7 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture 'i386' configcompression 'gz' '.' +confighashes 'SHA1' 'SHA256' 'SHA512' # enable by-hash in apt-ftparchive echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf diff --git a/test/integration/test-apt-ftparchive-cachedb-lp1274466 b/test/integration/test-apt-ftparchive-cachedb-lp1274466 index 8b768441a..44bc85fea 100755 --- a/test/integration/test-apt-ftparchive-cachedb-lp1274466 +++ b/test/integration/test-apt-ftparchive-cachedb-lp1274466 @@ -9,6 +9,7 @@ TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment configarchitecture "i386" +confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512' # gather the db and the deb, ensure mtime is not modfied as its saved in the DB cp -p $TESTDIR/deb-lp1274466-cachedb.deb foo_1_i386.deb diff --git a/test/integration/test-apt-ftparchive-src-cachedb b/test/integration/test-apt-ftparchive-src-cachedb index 66a3b7845..06f5bdd9d 100755 --- a/test/integration/test-apt-ftparchive-src-cachedb +++ b/test/integration/test-apt-ftparchive-src-cachedb @@ -93,6 +93,7 @@ TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment configarchitecture "i386" +confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512' msgtest 'Test apt-ftparchive source with missing hashes in .dsc' diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download index fa0b65672..c4ebd03bb 100755 --- a/test/integration/test-apt-get-download +++ b/test/integration/test-apt-get-download @@ -6,6 +6,7 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture "i386" +confighashes 'SHA512' buildsimplenativepackage 'apt' 'all' '1.0' 'stable' buildsimplenativepackage 'apt' 'all' '2.0' 'unstable' diff --git a/test/integration/test-apt-update-file b/test/integration/test-apt-update-file index 94b604f0e..f976993ca 100755 --- a/test/integration/test-apt-update-file +++ b/test/integration/test-apt-update-file @@ -11,6 +11,7 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture "amd64" configcompression 'bz2' 'gz' +confighashes 'SHA512' insertpackage 'unstable' 'foo' 'all' '1' insertsource 'unstable' 'foo' 'all' '1' diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage index f6a94ba67..62c87fe08 100755 --- a/test/integration/test-pdiff-usage +++ b/test/integration/test-pdiff-usage @@ -6,6 +6,7 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture 'i386' +confighashes 'SHA1' 'SHA256' buildaptarchive setupflataptarchive diff --git a/test/integration/test-ubuntu-bug-1078697-missing-source-hashes b/test/integration/test-ubuntu-bug-1078697-missing-source-hashes index 6fcb856b5..badc097b3 100755 --- a/test/integration/test-ubuntu-bug-1078697-missing-source-hashes +++ b/test/integration/test-ubuntu-bug-1078697-missing-source-hashes @@ -5,6 +5,7 @@ TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment configarchitecture "i386" +confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512' msgtest 'Test apt-ftparchive source with missing hashes in .dsc' @@ -22,14 +23,16 @@ Files: EOF # check for the SHA hashes -aptftparchive sources aptarchive/ > aptarchive/Sources 2>/dev/null || msgfail -test -n "$(grep Checksums-Sha512 aptarchive/Sources)" && msgpass || msgfail +testsuccess aptftparchive sources aptarchive/ +cp rootdir/tmp/testsuccess.output aptarchive/Sources +testsuccess grep Checksums-Sha512 aptarchive/Sources for hash in sha512sum sha256sum sha1sum; do for f in foo_1.0.tar.gz foo_1.0.dsc; do SUM=$($hash aptarchive/$f | cut -d' ' -f1) - msgtest "Test $hash hash matches for $f" NEEDLE="$SUM $(stat -c%s aptarchive/$f) $f" - test -n "$SUM" && test -n "$(grep "$NEEDLE" aptarchive/Sources)" && msgpass || msgfail + testsuccess test -n "$SUM" + msgtest "Test $hash hash matches for $f" + testsuccess --nomsg grep "$NEEDLE" aptarchive/Sources done done -- cgit v1.2.3