summaryrefslogtreecommitdiff
path: root/test/integration/test-method-mirror
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2018-01-19 02:20:40 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2018-01-19 21:55:39 +0100
commit38d444af2632219ab399dabadaaefaa4dcdd6ebf (patch)
treeb4a9896ec04cb8a588db15ff797c3c044d0a43fa /test/integration/test-method-mirror
parent70e68ed87d8ecd011df80f00c6b8ff6316e2b413 (diff)
allow the apt/lists/auxfiles/ directory to be missing
apt 1.6~alpha6 introduced aux requests to revamp the implementation of a-t-mirror. This already included the potential of running as non-root, but the detection wasn't complete resulting in errors or could produce spurious warnings along the way if the directory didn't exist yet. References: ef9677831f62a1554a888ebc7b162517d7881116 Closes: 887624
Diffstat (limited to 'test/integration/test-method-mirror')
-rwxr-xr-xtest/integration/test-method-mirror38
1 files changed, 35 insertions, 3 deletions
diff --git a/test/integration/test-method-mirror b/test/integration/test-method-mirror
index d00118405..99d0c9700 100755
--- a/test/integration/test-method-mirror
+++ b/test/integration/test-method-mirror
@@ -14,15 +14,37 @@ changetowebserver
webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://localhost:${APTHTTPPORT}/"
addtrap 'prefix' "chmod -f -R +w $PWD/rootdir/var/lib/apt/lists || true;"
-testrundownload_internal() {
- cd downloaded
- testsuccess apt download "$@"
+testrundownload_internal_debs() {
+ local WORKDIR="$1"
+ shift
+ if [ "$WORKDIR" != '.' ]; then cd "$WORKDIR"; fi
while [ -n "$1" ]; do
+ if [ "$1" = 'foo=1' ]; then shift; continue; fi
local fndeb="$(echo "$1" | tr '=' '_')_all.deb"
testsuccess test -e "$fndeb"
rm -f "$fndeb"
shift
done
+ if [ "$WORKDIR" != '.' ]; then cd - >/dev/null; fi
+}
+testrundownload_internal() {
+ cd downloaded
+ testsuccess apt install --download-only -o Debug::NoLocking=true -y "$@"
+ testrundownload_internal_debs '../rootdir/var/cache/apt/archives' "$@"
+ msgtest 'Repeat the download only install test with' 'aptitude'
+ if dpkg-checkbuilddeps -d 'aptitude' /dev/null >/dev/null 2>&1; then
+ if aptitude install --download-only -o Debug::NoLocking=true -y "$@" > ../rootdir/tmp/aptitude.log 2>&1; then
+ msgpass
+ else
+ msgfail
+ cat >&2 ../rootdir/tmp/aptitude.log
+ fi
+ testrundownload_internal_debs '../rootdir/var/cache/apt/archives' "$@"
+ else
+ msgskip 'not installed'
+ fi
+ testsuccess apt download "$@" -o Debug::pkgAcquire::Worker=1
+ testrundownload_internal_debs '.' "$@"
testempty find . -name '*mirror*'
cd ..
}
@@ -37,6 +59,10 @@ testrundownload() {
chmod -f -R -w rootdir/var/lib/apt/lists/auxfiles
testrundownload_internal "$@"
chmod -f -R +w rootdir/var/lib/apt/lists
+ rm -rf rootdir/var/lib/apt/lists/auxfiles
+ chmod -f -R -w rootdir/var/lib/apt/lists
+ testrundownload_internal "$@"
+ chmod -f -R +w rootdir/var/lib/apt/lists
fi
}
testrun() {
@@ -161,6 +187,7 @@ Hit:2 http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
Reading package lists...
Building dependency tree...
All packages are up to date." apt update
+testrundownload 'foo=2'
sed -i -e 's# mirror+# foo+mirror+#' rootdir/etc/apt/sources.list.d/*
testfailure apt update
testsuccess grep 'package apt-transport-foo installed' rootdir/tmp/testfailure.output
@@ -170,6 +197,8 @@ Hit:2 foo+http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
Reading package lists...
Building dependency tree...
All packages are up to date." apt update
+testrundownload 'foo=2'
+
echo "file:/nonexistent/apt/archive priority:1
http://localhost:${APTHTTPPORT}/redirectme
" > aptarchive/mirror.txt
@@ -183,8 +212,11 @@ Building dependency tree...
All packages are up to date." apt update
sed -i -e "s#+file:${APTARCHIVE}#+http://localhost:${APTHTTPPORT}#" rootdir/etc/apt/sources.list.d/*
testsuccess apt update
+testrundownload 'foo=2'
+
testsuccessequal "Get:1 foo+http://localhost:${APTHTTPPORT}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
Hit:2 foo+http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
Reading package lists...
Building dependency tree...
All packages are up to date." apt update
+testrundownload 'foo=2'