]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-pdiff-usage
eipp: make no difference between remove & purge
[apt.git] / test / integration / test-pdiff-usage
index 2318448f5b60917a8cf69d132d19f3ed2b24cc45..9c7946083d3788b7d9616cee65ebb7d0923489f0 100755 (executable)
@@ -10,9 +10,24 @@ LOWCOSTEXT='lz4'
 
 buildaptarchive
 setupflataptarchive
-changetowebserver -o aptwebserver::support::modified-since=false
+changetowebserver
+
+cat >rootdir/etc/apt/apt.conf.d/contents.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+       MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+       ShortDescription "Contents";
+       Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+       MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+       flatMetaKey "Contents-\$(ARCHITECTURE)";
+       flatDescription "\$(RELEASE) \$(ARCHITECTURE) Contents";
+};
+EOF
 
 PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
+echo 'contents for stuff' > aptarchive/Contents-i386
+compressfile aptarchive/Contents-i386
+echo 'hacked' > aptarchive/hacked-i386
+compressfile aptarchive/hacked-i386
 
 wasmergeused() {
        testsuccess apt update "$@"
@@ -46,6 +61,8 @@ wasmergeused() {
        else
                msgpass
        fi
+
+       testequal '1' grep -c rred:601 rootdir/tmp/testsuccess.output
 }
 
 testrun() {
@@ -65,7 +82,7 @@ testrun() {
        configcompression '.' 'gz'
 
        # see if the code deals properly with leftover partial files
-       touch rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_Packages
+       partialleftovers
 
        msgmsg "Testcase: apply with one patch: $*"
        find aptarchive -name 'Packages*' -type f -delete
@@ -192,6 +209,29 @@ SHA256-Download:
        testsuccessequal "$(cat Packages-future)
 " aptcache show apt newstuff futurestuff
 
+       # we reuse the archive state of the previous test here
+       msgmsg "Testcase: pdiff handling is stopped if transaction fails $*"
+       rm -rf rootdir/var/lib/apt/lists
+       cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+       cp Packages-future aptarchive/Packages
+       rm -f rootdir/var/lib/apt/lists/*_Contents-*
+       webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/hacked-i386.gz'
+       testfailure apt update "$@"
+       webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/Contents-i386.gz'
+       cp rootdir/tmp/testfailure.output patchdownload.output
+       testfailure grep 'rred:600' patchdownload.output
+       testnopackage newstuff futurestuff
+       testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt oldstuff
+
+       # we reuse the entire state of the previous test here
+       msgmsg "Testcase: good files from previous fails are picked up from partial: $*"
+       wasmergeused "$@"
+       testfailure grep '^GET /Packages.diff/Index HTTP/1.1' rootdir/tmp/testsuccess.output
+       testnopackage oldstuff
+       testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
        # we reuse the archive state of the previous test here
        msgmsg "Testcase: downloading a patch fails, but successful fallback: $*"
        rm -rf rootdir/var/lib/apt/lists
@@ -262,7 +302,7 @@ SHA256-Download:
  $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz")000 $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
        generatereleasefiles '+1hour'
        signreleasefiles
-       testsuccess apt update -o Debug::pkgAcquire::Diffs=1 "$@"
+       testsuccess apt update "$@"
        cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
        testsuccess grep 'bytes (Limit is' rootdir/tmp/aptupdate.output
        testnopackage oldstuff
@@ -271,6 +311,9 @@ SHA256-Download:
 }
 echo 'Debug::pkgAcquire::Diffs "true";
 Debug::Acquire::Transaction "true";
+Debug::pkgAcquire::Worker "true";
+Debug::Acquire::http "true";
+Debug::pkgAcquire "true";
 Debug::pkgAcquire::rred "true";' > rootdir/etc/apt/apt.conf.d/rreddebug.conf
 
 testcase() {
@@ -279,7 +322,20 @@ testcase() {
        testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=0 "$@"
        testrun -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=0 "$@"
 }
+partialleftovers() { touch "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_Packages"; }
 aptautotest_apt_update() { aptautotest_aptget_update "$@"; testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_Packages"; }
 testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=false
+partialleftovers() { touch "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_Packages.$LOWCOSTEXT"; }
 aptautotest_apt_update() { aptautotest_aptget_update "$@"; testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_Packages.$LOWCOSTEXT"; }
 testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=true
+
+
+partialleftovers() { touch "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_redirectme_Packages.$LOWCOSTEXT"; }
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://0.0.0.0:${APTHTTPPORT}/"
+rewritesourceslist "http://localhost:${APTHTTPPORT}/redirectme"
+aptautotest_apt_update() {
+       aptautotest_aptget_update "$@"
+       testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_redirectme_Packages.$LOWCOSTEXT"
+       testempty find rootdir/var/lib/apt/lists -type f \! \( -name lock -o -name '*_redirectme_*' \)
+}
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=true