#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture "i386"

buildaptarchive
touch aptarchive/Packages
setupflataptarchive

failureupdate() {
	rm -rf rootdir/var/lib/apt
	testfailure aptget update --allow-insecure-repositories
	testsuccess grep "^E: Failed to fetch store:${1}  Empty files can't be valid archives$" rootdir/tmp/testfailure.output
}
successupdate() {
	rm -rf rootdir/var/lib/apt
	testwarning aptget update --allow-insecure-repositories
}

createemptyarchive() {
	find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete
	touch aptarchive/Packages
	echo -n "" | $COMPRESSOR_CMD > aptarchive/${1}.$COMPRESS
	find aptarchive -name '*Release*' -delete
	rm -f aptarchive/Packages
}

createemptyfile() {
	find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete
	touch aptarchive/Packages aptarchive/${1}.$COMPRESS
	find aptarchive -name '*Release*' -delete
	rm -f aptarchive/Packages
}

testoverfile() {
	local APTARCHIVE="$(readlink -f ./aptarchive)"
	forcecompressor "$1"

	msgmsg 'archive over file' "Packages.$COMPRESS"
	createemptyarchive 'Packages'
	successupdate
	createemptyfile 'Packages'
	failureupdate "$(readlink -f rootdir/var/lib/apt/lists/partial/$(echo "$APTARCHIVE" | sed -e 's#/#_#g')_Packages.${COMPRESS})"
}

testoverhttp() {
	forcecompressor "$1"

	msgmsg 'archive over http' "Packages.$COMPRESS"
	createemptyarchive 'Packages'
	successupdate
	createemptyfile 'Packages'
	failureupdate "$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_Packages.${COMPRESS})"
}

forallsupportedcompressors testoverfile

# do the same again with http instead of file
changetowebserver

forallsupportedcompressors testoverhttp