X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/9397ea947c23c0957a683152360909810340abce..27f38567fe327ecaf7fb361c3cca6ee29e6300c9:/test/integration/test-apt-get-clean

diff --git a/test/integration/test-apt-get-clean b/test/integration/test-apt-get-clean
index 457bff9d3..d05073218 100755
--- a/test/integration/test-apt-get-clean
+++ b/test/integration/test-apt-get-clean
@@ -1,35 +1,88 @@
 #!/bin/sh
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+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
+setupaptarchive --no-update
+
+mkdir -p rootdir/var/lib/apt/lists/lost+found
+testsuccess apt update
 
 # nothing to do always works
 testsuccess aptget clean
+testsuccess aptget clean -s
 
 # generate some dirt and clean it up
-touch rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
-mkdir -p rootdir/var/cache/apt/archives
-touch rootdir/var/cache/apt/archives/foo_1_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() {
+	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
+}
 
-testsuccess aptget clean
+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
+
+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'