]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-pdiff-usage
add apt-key support for armored GPG key files (*.asc)
[apt.git] / test / integration / test-pdiff-usage
index 4e2d1f182a8bdbfee4bad808f460de9ce48c2b62..59a3fd8afffb4e7dbf641b7bbe2c353dadcbccda 100755 (executable)
@@ -30,7 +30,12 @@ echo 'hacked' > aptarchive/hacked-i386
 compressfile aptarchive/hacked-i386
 
 wasmergeused() {
+       if echo "$*" | grep -q -- '-o test::cannot-use-pdiff=1'; then
+               find rootdir/var/lib/apt/lists/partial -name '*-patched*' -delete
+       fi
+
        testsuccess apt update "$@"
+       #apt update "$@" 2>&1 | tee rootdir/tmp/testsuccess.output
 
        msgtest 'No intermediate patch files' 'still exist'
        local EDS="$(find rootdir/var/lib/apt/lists -name '*.ed' -o -name '*.ed.*')"
@@ -61,6 +66,8 @@ wasmergeused() {
        else
                msgpass
        fi
+
+       testequal '1' grep -c rred:601 rootdir/tmp/testsuccess.output
 }
 
 testrun() {
@@ -110,6 +117,34 @@ SHA256-Download:
        testsuccessequal "$(cat "${PKGFILE}-new")
 " aptcache show apt newstuff
 
+       msgmsg "Testcase: apply with compressed Index and one patch: $*"
+       cp "${PKGFILE}-new" aptarchive/Packages
+       compressfile 'aptarchive/Packages'
+       cat "$PATCHINDEX" | gzip > "${PATCHINDEX}.gz"
+       generatereleasefiles '+1hour'
+       signreleasefiles
+       find aptarchive -name 'Packages*' -type f -delete
+       rm "$PATCHINDEX"
+       rm -rf rootdir/var/lib/apt/lists
+       cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+       wasmergeused "$@"
+       testnopackage oldstuff
+       testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+       msgmsg "Testcase: apply with by-hash compressed Index and one patch: $*"
+       local NORMAL="$(readlink -f "./aptarchive/Packages.diff")"
+       local BYHASH="${NORMAL}/by-hash/SHA256"
+       mkdir -p "${BYHASH}"
+       find "${NORMAL}/" -maxdepth 1 -name "Index*" -exec mv '{}' "$BYHASH" \;
+       ln -s "${BYHASH}/Index.gz" "${BYHASH}/$(sha256sum "${BYHASH}/Index.gz" | cut -f1 -d' ')"
+       rm -rf rootdir/var/lib/apt/lists
+       cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+       wasmergeused "$@" -o Acquire::By-Hash=force
+       testnopackage oldstuff
+       testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
        msgmsg "Testcase: SHA1-only patches are not used: $*"
        find aptarchive -name 'Packages*' -type f -delete
        cp "${PKGFILE}-new" aptarchive/Packages
@@ -214,7 +249,7 @@ SHA256-Download:
        cp Packages-future aptarchive/Packages
        rm -f rootdir/var/lib/apt/lists/*_Contents-*
        webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/hacked-i386.gz'
-       testfailure apt update "$@" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+       testfailure apt update "$@"
        webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/Contents-i386.gz'
        cp rootdir/tmp/testfailure.output patchdownload.output
        testfailure grep 'rred:600' patchdownload.output
@@ -222,6 +257,14 @@ SHA256-Download:
        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
@@ -292,8 +335,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 "$@"
-       cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+       wasmergeused "$@" -o test::cannot-use-pdiff=1
        testsuccess grep 'bytes (Limit is' rootdir/tmp/aptupdate.output
        testnopackage oldstuff
        testsuccessequal "$(cat "${PKGFILE}-new")
@@ -301,7 +343,10 @@ SHA256-Download:
 }
 echo 'Debug::pkgAcquire::Diffs "true";
 Debug::Acquire::Transaction "true";
-Debug::pkgAcquire::rred "true";' > rootdir/etc/apt/apt.conf.d/rreddebug.conf
+Debug::pkgAcquire::Worker "true";
+Debug::Acquire::http "true";
+Debug::pkgAcquire "true";
+Debug::Acquire::rred "true";' > rootdir/etc/apt/apt.conf.d/rreddebug.conf
 
 testcase() {
        testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=1 "$@"
@@ -309,15 +354,22 @@ 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"; }
+generatepartialleftovers() {
+       for f in "$@"; do
+               cat "${PKGFILE}" "${PKGFILE}" > "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${f}"
+               printf '\n\nInvalid\nStanza: yes\n\n' >> "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${f}"
+       done
+}
+
+partialleftovers() { generatepartialleftovers 'Packages' 'Packages-patched'; }
 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"; }
+partialleftovers() { generatepartialleftovers "Packages.${LOWCOSTEXT}" "Packages-patched.${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"; }
+partialleftovers() { generatepartialleftovers "redirectme_Packages.${LOWCOSTEXT}" "redirectme_Packages-patched.${LOWCOSTEXT}"; }
 webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://0.0.0.0:${APTHTTPPORT}/"
 rewritesourceslist "http://localhost:${APTHTTPPORT}/redirectme"
 aptautotest_apt_update() {