test-kernel-helper-autoremove 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/bin/sh
  2. set -e
  3. TESTDIR=$(readlink -f $(dirname $0))
  4. . $TESTDIR/framework
  5. setupenvironment
  6. configarchitecture 'amd64'
  7. # the executed script would use the installed apt-config,
  8. # which is outside of our control
  9. msgtest 'Check that the installed apt-config supports' '--no-empty'
  10. if /usr/bin/apt-config dump --no-empty >/dev/null 2>&1; then
  11. msgpass
  12. else
  13. msgskip
  14. exit 0
  15. fi
  16. CURRENTKERNEL="linux-image-$(uname -r)"
  17. insertinstalledpackage "$CURRENTKERNEL" 'amd64' '1'
  18. insertinstalledpackage 'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2'
  19. insertinstalledpackage 'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1'
  20. insertinstalledpackage 'linux-image-amd64' 'amd64' '100.0.0-1'
  21. # ensure that the '.' is really a dot and not a wildcard
  22. insertinstalledpackage 'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1'
  23. testsuccess aptmark auto "$CURRENTKERNEL" 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' 'linux-headers-1000000-1-generic'
  24. # install fake-dpkg into it
  25. catfail() {
  26. echo >&2
  27. echo >&2 '### List of protected kernels:'
  28. cat >&2 protected.list
  29. msgfail
  30. }
  31. testprotected() {
  32. rm -f rootdir/etc/apt/apt.conf.d/01autoremove-kernels protected.list
  33. testsuccess runapt sh ${TESTDIR}/../../debian/apt.auto-removal.sh "$@"
  34. msgtest 'Check kernel autoremoval protection list' 'is created'
  35. test -e rootdir/etc/apt/apt.conf.d/01autoremove-kernels && msgpass || msgfail
  36. msgtest 'Check kernel autoremoval protection list' 'can be dumped'
  37. aptconfig dump --no-empty --format '%v%n' 'APT::NeverAutoRemove' >protected.list 2>&1 && msgpass || catfail
  38. msgtest 'Check kernel autoremoval protection list' 'can be parsed'
  39. grep -q '^[A-Z]: ' protected.list && catfail || msgpass
  40. msgtest 'Check kernel autoremoval protection list includes' 'most recent kernel'
  41. grep -q '^\^linux-image-100\\\.0\\\.0-1-generic\$$' protected.list && msgpass || catfail
  42. msgtest 'Check kernel autoremoval protection list includes' 'running kernel'
  43. grep -q "^\\^linux-image-$(uname -r | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list && msgpass || catfail
  44. }
  45. testsuccessequal "Reading package lists...
  46. Building dependency tree...
  47. Reading state information...
  48. The following packages were automatically installed and are no longer required:
  49. linux-headers-1000000-1-generic (100.0.0-1)
  50. linux-image-1.0.0-2-generic (1.0.0-2)
  51. linux-image-100.0.0-1-generic (100.0.0-1)
  52. $CURRENTKERNEL (1)
  53. Use 'apt-get autoremove' to remove them.
  54. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV
  55. testequal "Reading package lists...
  56. Building dependency tree...
  57. Reading state information...
  58. 4 packages were automatically installed and are no longer required.
  59. Use 'apt-get autoremove' to remove them.
  60. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
  61. testequal "Reading package lists...
  62. Building dependency tree...
  63. Reading state information...
  64. The following packages will be REMOVED:
  65. linux-headers-1000000-1-generic (100.0.0-1)
  66. linux-image-1.0.0-2-generic (1.0.0-2)
  67. linux-image-100.0.0-1-generic (100.0.0-1)
  68. $CURRENTKERNEL (1)
  69. 0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
  70. Remv linux-headers-1000000-1-generic [100.0.0-1]
  71. Remv linux-image-1.0.0-2-generic [1.0.0-2]
  72. Remv linux-image-100.0.0-1-generic [100.0.0-1]
  73. Remv $CURRENTKERNEL [1]" aptget autoremove -sV
  74. testprotected
  75. msgtest 'Check kernel autoremoval protection list does not include' 'old kernel'
  76. grep -q '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list && catfail || msgpass
  77. testsuccessequal 'Reading package lists...
  78. Building dependency tree...
  79. Reading state information...
  80. The following packages will be REMOVED:
  81. linux-headers-1000000-1-generic linux-image-1.0.0-2-generic
  82. 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
  83. Remv linux-headers-1000000-1-generic [100.0.0-1]
  84. Remv linux-image-1.0.0-2-generic [1.0.0-2]' aptget autoremove -s
  85. testprotected 1.0.0-2-generic
  86. msgtest 'Check kernel autoremoval protection list includes' 'installed kernel'
  87. grep -q '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list && msgpass || catfail
  88. testsuccessequal 'Reading package lists...
  89. Building dependency tree...
  90. Reading state information...
  91. The following packages will be REMOVED:
  92. linux-headers-1000000-1-generic
  93. 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
  94. Remv linux-headers-1000000-1-generic [100.0.0-1]' aptget autoremove -s