diff options
author | David Kalnischkies <david@kalnischkies.de> | 2014-10-18 20:00:25 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2014-10-20 10:37:46 +0200 |
commit | ab25bf1f08ca605d3eb4c05619e8df495ccca30a (patch) | |
tree | 8accbe46d0857e3e25a900ec63de01980ad8ac8e /test/integration | |
parent | de81b2e20f80bb5f42034863a9a974c815a45da5 (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/framework | 42 | ||||
-rwxr-xr-x | test/integration/test-apt-get-download | 5 | ||||
-rwxr-xr-x | test/integration/test-apt-update-ims | 5 | ||||
-rwxr-xr-x | test/integration/test-apt-update-transactions | 5 |
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() { |