X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/de81b2e20f80bb5f42034863a9a974c815a45da5..e7e10e47476606e3b2274cf66b1e8ea74b236757:/test/integration/test-apt-update-transactions

diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions
index 2d5d9e721..a5dac1737 100755
--- a/test/integration/test-apt-update-transactions
+++ b/test/integration/test-apt-update-transactions
@@ -8,6 +8,7 @@ TESTDIR=$(readlink -f $(dirname $0))
 
 setupenvironment
 configarchitecture 'i386'
+configcompression '.' 'gz'
 
 insertpackage 'unstable' 'foo' 'all' '1.0'
 insertsource 'unstable' 'foo' 'all' '1.0'
@@ -15,7 +16,8 @@ insertsource 'unstable' 'foo' 'all' '1.0'
 setupaptarchive --no-update
 
 breakfile() {
-	mv "$1" "${1}.bak"
+	mv "${1}" "${1}.bak"
+	mv "${1}.gz" "${1}.gz.bak"
 	cat > "$1" <<EOF
 Package: bar
 EOF
@@ -23,51 +25,66 @@ EOF
 }
 restorefile() {
 	mv "${1}.bak" "$1"
-}
-
-listscheck() {
-	testequal "$(cat $1)" ls rootdir/var/lib/apt/lists
-	# all copied files are properly chmodded
-	find rootdir/var/lib/apt/lists -maxdepth 1 -type f | while read file; do
-		testaccessrights "$file" '644'
-		testfilestats "$file" '%U' '!=' '_apt'
-	done
+	mv "${1}.gz.bak" "${1}.gz"
 }
 
 testrun() {
+	rm -rf aptarchive/dists.good
+	cp -a aptarchive/dists aptarchive/dists.good
+	insertpackage 'unstable' 'bar' 'all' '1.0'
+	insertsource 'unstable' 'bar' 'all' '1.0'
+	buildaptarchivefromfiles '+1 hour'
+
 	# produce an unsigned repository
 	find aptarchive \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
 	testfailure aptget update --no-allow-insecure-repositories
-	listscheck "$1"
+	testfileequal "$1" "$(listcurrentlistsdirectory)"
 
 	# signed but broken
 	signreleasefiles
 
+	onehashbroken() {
+		testfailure aptget update
+		# each file generates two messages with this string
+		testequal '2' grep --count 'Hash Sum mismatch' rootdir/tmp/testfailure.output
+		testfileequal "$1" "$(listcurrentlistsdirectory)"
+	}
+
 	breakfile aptarchive/dists/unstable/main/binary-i386/Packages
-	testfailure aptget update
-	listscheck "$1"
+	onehashbroken "$1"
 	restorefile aptarchive/dists/unstable/main/binary-i386/Packages
 
 	breakfile aptarchive/dists/unstable/main/source/Sources
-	testfailure aptget update
-	listscheck "$1"
+	onehashbroken "$1"
 	restorefile aptarchive/dists/unstable/main/source/Sources
+
+	rm -rf aptarchive/dists
+	cp -a aptarchive/dists.good aptarchive/dists
 }
 
 testsetup() {
 	msgmsg 'Test with no initial data over' "$1"
 	rm -rf rootdir/var/lib/apt/lists
 	mkdir -p rootdir/var/lib/apt/lists/partial
-	ls rootdir/var/lib/apt/lists > listsdir.lst
+	listcurrentlistsdirectory > listsdir.lst
 	testrun 'listsdir.lst'
 
 	msgmsg 'Test with initial data over' "$1"
-	testsuccess aptget update
-	ls rootdir/var/lib/apt/lists > listsdir.lst
+	rm -rf rootdir/var/lib/apt/lists
+	testsuccess aptget update -o Debug::pkgAcquire::Worker=1
+	listcurrentlistsdirectory > listsdir.lst
 	testrun 'listsdir.lst'
 }
 
 testsetup 'file'
+
 changetowebserver
+webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
+webserverconfig 'aptwebserver::support::last-modified' 'false' "$1"  # curl is clever and sees hits here also
+webserverconfig 'aptwebserver::support::range' 'false' "$1"
+
 testsetup 'http'
 
+changetohttpswebserver
+
+testsetup 'https'