diff options
Diffstat (limited to 'test/integration/test-apt-get-clean')
-rwxr-xr-x | test/integration/test-apt-get-clean | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/test/integration/test-apt-get-clean b/test/integration/test-apt-get-clean new file mode 100755 index 0000000..32dd3e8 --- /dev/null +++ b/test/integration/test-apt-get-clean @@ -0,0 +1,120 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'amd64' + +insertpackage 'testing' 'foo' 'all' '1' +insertpackage 'unstable' 'foo' 'all' '2' +insertpackage 'experimental' 'foo' 'all' '1:1' +insertinstalledpackage 'foo' 'all' '3' + +setupaptarchive --no-update +mkdir -p rootdir/var/lib/apt/lists/partial +testsuccess test -d rootdir/var/lib/apt/lists/partial + +# nothing to do always works (part 1) +for cmd in aptget apt; do + for sub in distclean dist-clean; do + testsuccess $cmd $sub + testsuccess $cmd $sub -s + done +done +testsuccess test -d rootdir/var/lib/apt/lists/partial + +testsuccess apt update + +# nothing to do always works (part 2) +for cmd in aptget apt; do + for sub in clean autoclean auto-clean; do + testsuccess $cmd $sub + testsuccess $cmd $sub -s + done +done + +# generate some dirt and clean it up +generatedirt() { + touch rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en + mkdir -p rootdir/var/cache/apt/archives/lost+found + touch rootdir/var/cache/apt/archives/foo_1_all.deb + touch rootdir/var/cache/apt/archives/foo_1%3a1_all.deb + touch rootdir/var/cache/apt/archives/foo_2%3a1_all.deb + touch rootdir/var/cache/apt/archives/foo_2_all.deb + touch rootdir/var/cache/apt/archives/foo_3_all.deb + touch rootdir/var/cache/apt/archives/foo_4_all.deb +} + +generatedirt +testsuccess aptget autoclean +testsuccess test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en +testsuccess test -e rootdir/var/cache/apt/archives/foo_1_all.deb +testsuccess test -e rootdir/var/cache/apt/archives/foo_1%3a1_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_2%3a1_all.deb +testsuccess test -e rootdir/var/cache/apt/archives/foo_2_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb + +generatedirt +testsuccess aptget clean +testfailure test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en +testfailure test -e rootdir/var/cache/apt/archives/foo_1_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_1%3a1_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_2%3a1_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_2_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb +testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb + +if [ "$(id -u)" != '0' ]; then + msgmsg 'No clean if lock can not be acquired' + touch rootdir/var/cache/apt/archives/foo_4_all.deb + touch rootdir/var/cache/apt/archives/lock + chmod 444 rootdir/var/cache/apt/archives/lock + testfailure apt clean + testsuccess test -e rootdir/var/cache/apt/archives/foo_4_all.deb + chmod 644 rootdir/var/cache/apt/archives/lock +fi + +msgmsg 'distclean' +listcurrentlistsdirectory > aptdistclean.before +testsuccessequal '3' grep -c -e 'Release$' aptdistclean.before +testsuccess grep -e 'Packages$' -e 'Sources$' -e 'Translation-*$' aptdistclean.before +testsuccess apt distclean +listcurrentlistsdirectory > aptdistclean.after +testfailure cmp aptdistclean.before aptdistclean.after +testsuccessequal '3' grep -c -e 'Release$' aptdistclean.after +testfailureequal '0' grep -c -e 'Packages$' -e 'Sources$' -e 'Translation-*$' aptdistclean.after +for dirt in Packages.gz Sources.xz Release2gpg Release_Packages; do + touch "rootdir/var/lib/apt/lists/_foo_bar_$dirt" +done +listcurrentlistsdirectory > aptdistclean.before +testsuccess apt distclean +listcurrentlistsdirectory > aptdistclean.cleaned +testsuccess cmp aptdistclean.after aptdistclean.cleaned + +directorygone() { + rm -rf "$1" + testsuccess apt autoclean + testfailure test -d "$1" + testsuccess apt clean + # clean creates an empty partial directory via GetLock + if [ "$(basename "$1")" = 'partial' ]; then + testsuccess test -d "$1" + else + testfailure test -d "$1" + fi +} +msgmsg 'Partial directory missing' +directorygone 'rootdir/var/cache/apt/archives/partial' +directorygone 'rootdir/var/lib/apt/lists/partial' + +msgmsg 'Archives directory missing' +directorygone 'rootdir/var/cache/apt/archives' +directorygone 'rootdir/var/lib/apt/lists' + +msgmsg 'apt directory missing' +directorygone 'rootdir/var/cache/apt' +directorygone 'rootdir/var/lib/apt' + |