test-apt-get-clean 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/sh
  2. set -e
  3. TESTDIR="$(readlink -f "$(dirname "$0")")"
  4. . "$TESTDIR/framework"
  5. setupenvironment
  6. configarchitecture 'amd64'
  7. insertpackage 'testing' 'foo' 'all' '1'
  8. insertpackage 'unstable' 'foo' 'all' '2'
  9. insertinstalledpackage 'foo' 'all' '3'
  10. setupaptarchive --no-update
  11. mkdir -p rootdir/var/lib/apt/lists/lost+found
  12. testsuccess apt update
  13. # nothing to do always works
  14. testsuccess aptget clean
  15. testsuccess aptget clean -s
  16. # generate some dirt and clean it up
  17. touch rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
  18. mkdir -p rootdir/var/cache/apt/archives/lost+found
  19. touch rootdir/var/cache/apt/archives/foo_1_all.deb
  20. touch rootdir/var/cache/apt/archives/foo_2_all.deb
  21. touch rootdir/var/cache/apt/archives/foo_3_all.deb
  22. touch rootdir/var/cache/apt/archives/foo_4_all.deb
  23. testsuccess aptget clean
  24. testfailure test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
  25. testfailure test -e rootdir/var/cache/apt/archives/foo_1_all.deb
  26. testfailure test -e rootdir/var/cache/apt/archives/foo_2_all.deb
  27. testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb
  28. testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb
  29. if [ "$(id -u)" != '0' ]; then
  30. msgmsg 'No clean if lock can not be acquired'
  31. touch rootdir/var/cache/apt/archives/foo_4_all.deb
  32. touch rootdir/var/cache/apt/archives/lock
  33. chmod 444 rootdir/var/cache/apt/archives/lock
  34. testfailure apt clean
  35. testsuccess test -e rootdir/var/cache/apt/archives/foo_4_all.deb
  36. chmod 644 rootdir/var/cache/apt/archives/lock
  37. fi
  38. directorygone() {
  39. rm -rf "$1"
  40. testsuccess apt autoclean
  41. testfailure test -d "$1"
  42. testsuccess apt clean
  43. # clean creates an empty partial directory via GetLock
  44. if [ "$(basename "$1")" = 'partial' ]; then
  45. testsuccess test -d "$1"
  46. else
  47. testfailure test -d "$1"
  48. fi
  49. }
  50. msgmsg 'Partial directory missing'
  51. directorygone 'rootdir/var/cache/apt/archives/partial'
  52. directorygone 'rootdir/var/lib/apt/lists/partial'
  53. msgmsg 'Archives directory missing'
  54. directorygone 'rootdir/var/cache/apt/archives'
  55. directorygone 'rootdir/var/lib/apt/lists'
  56. msgmsg 'apt directory missing'
  57. directorygone 'rootdir/var/cache/apt'
  58. directorygone 'rootdir/var/lib/apt'