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
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'
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"
# create some files in /tmp and look at user/group to get what this means
TEST_DEFAULT_USER="$USER"
shift
done > ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf
}
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"
forcecompressor() {
COMPRESSOR="$1"
COMPRESSOR_CMD="$1"
local COMPRESSORS="$(cut -d' ' -f 1 ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf | tr '\n' ' ')"
local COMPRESSORS="${COMPRESSORS%* }"
local ARCHS="$(getarchitectures)"
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 <<EOF
+Dir {
+ ArchiveDir "$(readlink -f .)";
+ CacheDir "$(readlink -f ..)";
+ FileListDir "$(readlink -f pool/)";
- Packages::Compress "'"$COMPRESSORS"'";
- Sources::Compress "'"$COMPRESSORS"'";
- Contents::Compress "'"$COMPRESSORS"'";
- Translation::Compress "'"$COMPRESSORS"'";
+ Packages::Compress "$COMPRESSORS";
+ Sources::Compress "$COMPRESSORS";
+ Contents::Compress "$COMPRESSORS";
+ Translation::Compress "$COMPRESSORS";
LongDescription "false";
};
TreeDefault {
Directory "pool/";
SrcDirectory "pool/";
};
LongDescription "false";
};
TreeDefault {
Directory "pool/";
SrcDirectory "pool/";
};
-APT {
- FTPArchive {
- Release {
- Origin "joesixpack";
- Label "apttestcases";
- Suite "unstable";
- Description "repository with dummy packages";
- Architectures "' >> ftparchive.conf
- echo -n "$ARCHS" >> ftparchive.conf
- echo 'source";
- };
- };
-};' >> ftparchive.conf
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
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
getlabelfromsuite() { true; }
getoriginfromsuite() { 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
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
if [ -n "$ORIGIN" ]; then
ORIGIN="-o APT::FTPArchive::Release::Origin=${ORIGIN}"
fi
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} \
-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
if [ "$SUITE" = "experimental" -o "$SUITE" = "experimental2" ]; then
sed -i '/^Date: / a\
NotAutomatic: yes' $dir/Release
fi
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
- 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
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
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
setupenvironment
configarchitecture "i386"
setupenvironment
configarchitecture "i386"
insertpackage 'unstable' 'foo' 'all' '1.0'
insertpackage 'unstable' 'foo' 'all' '1.0'
setupenvironment
configarchitecture 'i386'
configcompression 'gz' '.'
setupenvironment
configarchitecture 'i386'
configcompression 'gz' '.'
+confighashes 'SHA1' 'SHA256' 'SHA512'
# enable by-hash in apt-ftparchive
echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf
# enable by-hash in apt-ftparchive
echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf
. $TESTDIR/framework
setupenvironment
configarchitecture "i386"
. $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
# 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
. $TESTDIR/framework
setupenvironment
configarchitecture "i386"
. $TESTDIR/framework
setupenvironment
configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
setupenvironment
configarchitecture "i386"
setupenvironment
configarchitecture "i386"
buildsimplenativepackage 'apt' 'all' '1.0' 'stable'
buildsimplenativepackage 'apt' 'all' '2.0' 'unstable'
buildsimplenativepackage 'apt' 'all' '1.0' 'stable'
buildsimplenativepackage 'apt' 'all' '2.0' 'unstable'
setupenvironment
configarchitecture "amd64"
configcompression 'bz2' 'gz'
setupenvironment
configarchitecture "amd64"
configcompression 'bz2' 'gz'
insertpackage 'unstable' 'foo' 'all' '1'
insertsource 'unstable' 'foo' 'all' '1'
insertpackage 'unstable' 'foo' 'all' '1'
insertsource 'unstable' 'foo' 'all' '1'
setupenvironment
configarchitecture 'i386'
setupenvironment
configarchitecture 'i386'
+confighashes 'SHA1' 'SHA256'
buildaptarchive
setupflataptarchive
buildaptarchive
setupflataptarchive
. $TESTDIR/framework
setupenvironment
configarchitecture "i386"
. $TESTDIR/framework
setupenvironment
configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
EOF
# check for the SHA hashes
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)
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"
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