4 TESTDIR
=$(readlink -f $(dirname $0)) 
   7 configarchitecture 
'amd64' 
   9 CURRENTKERNEL
="linux-image-$(uname -r)" 
  10 insertinstalledpackage 
"$CURRENTKERNEL" 'amd64' '5-1' 
  11 # debug packages do not need our protection 
  12 insertinstalledpackage 
"${CURRENTKERNEL}-dbg" 'amd64' '5-1' 
  13 # but other kernel flavours should be protected 
  14 insertinstalledpackage 
"${CURRENTKERNEL}-686-pae" 'i386' '5-1' 
  15 insertinstalledpackage 
"${CURRENTKERNEL}-rt" 'amd64' '5-1' 
  17 insertinstalledpackage 
'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2' 
  18 insertinstalledpackage 
'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1' 
  19 # kernel metapackages should be ignored 
  20 insertinstalledpackage 
'linux-image-amd64' 'amd64' '200-1' 
  21 insertinstalledpackage 
'linux-image-686-pae' 'i386' '300-1' 
  22 # ensure that the '.' is really a dot and not a wildcard 
  23 insertinstalledpackage 
'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1' 
  25 testsuccess aptmark auto 
"$CURRENTKERNEL" "${CURRENTKERNEL}-dbg" "${CURRENTKERNEL}-686-pae:i386" "${CURRENTKERNEL}-rt" \
 
  26         'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' 'linux-headers-1000000-1-generic' 
  27 testsuccess aptmark hold 
"${CURRENTKERNEL}-rt" 
  30         rm -f rootdir
/etc
/apt
/apt.conf.d
/01autoremove
-kernels protected.list
 
  32         testsuccess runapt sh 
"${TESTDIR}/../../debian/apt.auto-removal.sh" "$@" 
  33         testfailure 
test -s rootdir
/tmp
/testsuccess.output
 
  35         msgtest 
'Check kernel autoremoval protection list' 'is created' 
  36         testsuccess 
--nomsg test -e rootdir
/etc
/apt
/apt.conf.d
/01autoremove
-kernels 
  37         testfilestats 
'rootdir/etc/apt/apt.conf.d/01autoremove-kernels' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:444" 
  39         msgtest 
'Check kernel autoremoval protection list' 'can be dumped' 
  40         testsuccess 
--nomsg aptconfig dump 
--no-empty --format '%v%n' 'APT::NeverAutoRemove' 
  41         cp rootdir
/tmp
/testsuccess.output protected.list
 
  43         msgtest 
'Check kernel autoremoval protection list' 'can be parsed' 
  44         testfailure 
--nomsg grep '^[A-Z]: ' protected.list
 
  46         msgtest 
'Check kernel autoremoval protection list includes' 'most recent kernel' 
  47         testsuccess 
--nomsg grep '^\^linux-image-100\\\.0\\\.0-1-generic\$$' protected.list
 
  49         msgtest 
'Check kernel autoremoval protection list includes' 'running kernel' 
  50         testsuccess 
--nomsg grep "^\\^linux-image-$(uname -r | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list
 
  52         msgtest 
'Check kernel autoremoval protection list does not include' 'metapackages' 
  53         testfailure 
--nomsg grep -e '^\^linux-image-amd64\$$' -e '^\^linux-image-686-pae\$$' -e ':i386' protected.list
 
  56 AUTOREMOVE
='apt autoremove' 
  57 if [ -n "$SUDO_USER" ]; then 
  58         AUTOREMOVE
="sudo $AUTOREMOVE" 
  60 testsuccessequal 
"Reading package lists... 
  61 Building dependency tree... 
  62 Reading state information... 
  63 The following packages were automatically installed and are no longer required: 
  64    linux-headers-1000000-1-generic (100.0.0-1) 
  65    linux-image-1.0.0-2-generic (1.0.0-2) 
  66    linux-image-100.0.0-1-generic (100.0.0-1) 
  68    ${CURRENTKERNEL}-686-pae:i386 (5-1) 
  69    ${CURRENTKERNEL}-dbg (5-1) 
  70 Use '$AUTOREMOVE' to remove them. 
  71 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget 
install -sV 
  72 testsuccessequal 
"Reading package lists... 
  73 Building dependency tree... 
  74 Reading state information... 
  75 The following packages were automatically installed and are no longer required: 
  76    linux-headers-1000000-1-generic (100.0.0-1) 
  77    linux-image-1.0.0-2-generic (1.0.0-2) 
  78    linux-image-100.0.0-1-generic (100.0.0-1) 
  80    ${CURRENTKERNEL}-686-pae:i386 (5-1) 
  81    ${CURRENTKERNEL}-dbg (5-1) 
  82    ${CURRENTKERNEL}-rt (5-1) 
  83 Use '$AUTOREMOVE' to remove them. 
  84 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget 
install -sV --ignore-hold 
  85 testequal 
"Reading package lists... 
  86 Building dependency tree... 
  87 Reading state information... 
  88 6 packages were automatically installed and are no longer required. 
  89 Use '$AUTOREMOVE' to remove them. 
  90 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget 
install -s -o APT
::Get
::HideAutoRemove
=small
 
  91 testequal 
"Reading package lists... 
  92 Building dependency tree... 
  93 Reading state information... 
  94 The following packages will be REMOVED: 
  95    linux-headers-1000000-1-generic (100.0.0-1) 
  96    linux-image-1.0.0-2-generic (1.0.0-2) 
  97    linux-image-100.0.0-1-generic (100.0.0-1) 
  99    ${CURRENTKERNEL}-686-pae:i386 (5-1) 
 100    ${CURRENTKERNEL}-dbg (5-1) 
 101 0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded. 
 102 Remv linux-headers-1000000-1-generic [100.0.0-1] 
 103 Remv linux-image-1.0.0-2-generic [1.0.0-2] 
 104 Remv linux-image-100.0.0-1-generic [100.0.0-1] 
 105 Remv $CURRENTKERNEL [5-1] 
 106 Remv ${CURRENTKERNEL}-686-pae:i386 [5-1] 
 107 Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove 
-sV 
 109 msgmsg 
"run without parameter" 
 111 msgtest 
'Check kernel autoremoval protection list does not include' 'old kernel' 
 112 testfailure 
--nomsg grep '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list
 
 113 testsuccessequal 
"Reading package lists... 
 114 Building dependency tree... 
 115 Reading state information... 
 116 The following packages will be REMOVED: 
 117   linux-headers-1000000-1-generic linux-image-1.0.0-2-generic 
 119 0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded. 
 120 Remv linux-headers-1000000-1-generic [100.0.0-1] 
 121 Remv linux-image-1.0.0-2-generic [1.0.0-2] 
 122 Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove 
-s 
 124 msgmsg 
"install unknown kernel" 
 125 # even if installed/uname reports a kernel which we can't find via dpkg, 
 126 # ensure that we still protect it just in case as these are kernels we 
 127 # know for sure without complicated detection mechanisms 
 128 testprotected 
1.0.0-2-ungeneric 
 129 msgtest 
'Check kernel autoremoval protection list does not include' 'old kernel' 
 130 testfailure 
--nomsg grep '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list
 
 131 msgtest 
'Check kernel autoremoval protection list does include' 'unknown installed kernel' 
 132 testsuccess 
--nomsg grep '^\^linux-image-1\\\.0\\\.0-2-ungeneric\$$' protected.list
 
 133 testsuccessequal 
"Reading package lists... 
 134 Building dependency tree... 
 135 Reading state information... 
 136 The following packages will be REMOVED: 
 137   linux-headers-1000000-1-generic linux-image-1.0.0-2-generic 
 139 0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded. 
 140 Remv linux-headers-1000000-1-generic [100.0.0-1] 
 141 Remv linux-image-1.0.0-2-generic [1.0.0-2] 
 142 Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove 
-s 
 144 msgmsg 
"install an old kernel" 
 145 testprotected 
1.0.0-2-generic 
 146 msgtest 
'Check kernel autoremoval protection list includes' 'installed kernel' 
 147 testsuccess 
--nomsg grep '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list
 
 148 testsuccessequal 
"Reading package lists... 
 149 Building dependency tree... 
 150 Reading state information... 
 151 The following packages will be REMOVED: 
 152   linux-headers-1000000-1-generic ${CURRENTKERNEL}-dbg 
 153 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. 
 154 Remv linux-headers-1000000-1-generic [100.0.0-1] 
 155 Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove 
-s 
 157 # rt kernel was put on hold while the protected list was generated 
 158 testsuccess aptmark unhold 
"${CURRENTKERNEL}-rt" 
 159 testsuccessequal 
"Reading package lists... 
 160 Building dependency tree... 
 161 Reading state information... 
 162 The following packages will be REMOVED: 
 163   linux-headers-1000000-1-generic ${CURRENTKERNEL}-dbg 
 164 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. 
 165 Remv linux-headers-1000000-1-generic [100.0.0-1] 
 166 Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove 
-s