summaryrefslogtreecommitdiff
path: root/test/integration
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2014-10-18 20:00:25 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2014-10-20 10:37:46 +0200
commitab25bf1f08ca605d3eb4c05619e8df495ccca30a (patch)
tree8accbe46d0857e3e25a900ec63de01980ad8ac8e /test/integration
parentde81b2e20f80bb5f42034863a9a974c815a45da5 (diff)
autorun permission tests for all apt-get update calls
Adds some infrastructure to run tests automatically for certain commands. The first command being 'apt-get update' (and 'apt update') which check for correct permission and owner of the files in lists/. Git-Dch: Ignore
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/framework42
-rwxr-xr-xtest/integration/test-apt-get-download5
-rwxr-xr-xtest/integration/test-apt-update-ims5
-rwxr-xr-xtest/integration/test-apt-update-transactions5
4 files changed, 41 insertions, 16 deletions
diff --git a/test/integration/framework b/test/integration/framework
index d692f62a9..8ccbe7f6d 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -1081,12 +1081,13 @@ testfileequal() {
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() {
@@ -1103,7 +1104,8 @@ testequal() {
if [ -n "$MSG" ]; then
msgtest "$MSG" "$*"
fi
- $* 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail
+ "$@" 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail
+ aptautotest 'testequal' "$@"
}
testequalor2() {
@@ -1114,7 +1116,7 @@ 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
@@ -1126,6 +1128,7 @@ testequalor2() {
checkdiff $COMPAREFILE2 $COMPAREAGAINST || true
msgfail
fi
+ aptautotest 'testequalor2' "$@"
}
testshowvirtual() {
@@ -1210,6 +1213,7 @@ testsuccess() {
cat >&2 $OUTPUT
msgfail "exitcode $EXITCODE"
fi
+ aptautotest 'testsuccess' "$@"
}
testfailure() {
@@ -1227,6 +1231,7 @@ testfailure() {
else
msgpass
fi
+ aptautotest 'testfailure' "$@"
}
testfilestats() {
@@ -1271,3 +1276,34 @@ pause() {
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 "$@"; }
diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download
index 9a154e5fb..48086d808 100755
--- a/test/integration/test-apt-get-download
+++ b/test/integration/test-apt-get-download
@@ -32,11 +32,6 @@ done
testsuccess aptget update
-# all copied files are properly chmodded
-find rootdir/var/lib/apt/lists -type f | while read file; do
- testaccessrights "$file" '644'
-done
-
testdownload() {
local APT="$2"
if [ -n "$3" ]; then
diff --git a/test/integration/test-apt-update-ims b/test/integration/test-apt-update-ims
index c74058c5d..6746837a4 100755
--- a/test/integration/test-apt-update-ims
+++ b/test/integration/test-apt-update-ims
@@ -54,7 +54,7 @@ Hit http://localhost:8080 unstable/main amd64 Packages
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
@@ -78,9 +78,8 @@ Hit http://localhost:8080 unstable/main Translation-en
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
diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions
index 2d5d9e721..2fc5f1dad 100755
--- a/test/integration/test-apt-update-transactions
+++ b/test/integration/test-apt-update-transactions
@@ -27,11 +27,6 @@ restorefile() {
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
}
testrun() {