testempty() {
msgtest "Test for no output of" "$*"
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testempty.comparefile"
- if $* >$COMPAREFILE 2>&1 && test ! -s $COMPAREFILE; then
+ if "$@" >$COMPAREFILE 2>&1 && test ! -s $COMPAREFILE; then
msgpass
else
cat $COMPAREFILE
msgfail
fi
+ aptautotest 'testempty' "$@"
}
testequal() {
if [ -n "$MSG" ]; then
msgtest "$MSG" "$*"
fi
- $* 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail
+ "$@" 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail
+ aptautotest 'testequal' "$@"
}
testequalor2() {
echo "$2" > $COMPAREFILE2
shift 2
msgtest "Test for equality OR of" "$*"
- $* >$COMPAREAGAINST 2>&1 || true
+ "$@" >$COMPAREAGAINST 2>&1 || true
if checkdiff $COMPAREFILE1 $COMPAREAGAINST >/dev/null 2>&1 || \
checkdiff $COMPAREFILE2 $COMPAREAGAINST >/dev/null 2>&1
then
checkdiff $COMPAREFILE2 $COMPAREAGAINST || true
msgfail
fi
+ aptautotest 'testequalor2' "$@"
}
testshowvirtual() {
cat >&2 $OUTPUT
msgfail "exitcode $EXITCODE"
fi
+ aptautotest 'testsuccess' "$@"
}
testfailure() {
else
msgpass
fi
+ aptautotest 'testfailure' "$@"
}
testfilestats() {
local IGNORE
read IGNORE
}
+
+### The following tests are run by most test methods automatically to check
+### general things about commands executed without writing the test every time.
+
+aptautotest() {
+ local TESTCALL="$1"
+ local CMD="$2"
+ local FIRSTOPT="$3"
+ local AUTOTEST="aptautotest_$(basename "$CMD" | tr -d '-')_$(echo "$FIRSTOPT" | tr -d '-')"
+ if command -v $AUTOTEST >/dev/null; then
+ shift 3
+ # save and restore the *.output files from other tests
+ # as we might otherwise override them in these automatic tests
+ rm -rf rootdir/tmp-before
+ mv rootdir/tmp rootdir/tmp-before
+ mkdir rootdir/tmp
+ $AUTOTEST "$TESTCALL" "$@"
+ rm -rf rootdir/tmp-aptautotest
+ mv rootdir/tmp rootdir/tmp-aptautotest
+ mv rootdir/tmp-before rootdir/tmp
+ fi
+}
+
+aptautotest_aptget_update() {
+ if ! test -d "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists"; then return; fi
+ # all copied files are properly chmodded
+ find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" -maxdepth 1 -type f | while read file; do
+ testfilestats "$file" '%U:%G:%a' '=' "${USER}:${USER}:644"
+ done
+}
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; }
Hit http://localhost:8080 unstable/main Translation-en
Reading package lists..."
-find aptarchive -name "InRelease" | xargs rm -f
+find aptarchive -name 'InRelease' -delete
echo "Acquire::GzipIndexes "0";" > rootdir/etc/apt/apt.conf.d/02compressindex
runtest
Reading package lists...
W: The data from 'http://localhost:8080 unstable Release.gpg' is not signed. Packages from that repository can not be authenticated."
-find aptarchive -name "Release.gpg" | xargs rm -f
+find aptarchive -name 'Release.gpg' -delete
-echo 'Acquire::AllowInsecureRepositories "1";' > rootdir/etc/apt/apt.conf.d/insecure.conf
echo "Acquire::GzipIndexes "0";" > rootdir/etc/apt/apt.conf.d/02compressindex
runtest