308 lines
12 KiB
Bash
Executable file
308 lines
12 KiB
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
TESTDIR="$(readlink -f "$(dirname "$0")")"
|
|
. "$TESTDIR/framework"
|
|
setupenvironment
|
|
configarchitecture 'i386'
|
|
|
|
buildsimplenativepackage 'unrelated' 'all' '1' 'unstable'
|
|
buildsimplenativepackage 'po-debconf' 'all' '1.0.16' 'unstable'
|
|
buildsimplenativepackage 'debhelper' 'all' '8.0.0' 'unstable' 'Depends: po-debconf'
|
|
buildsimplenativepackage 'base-files' 'all' '10' 'unstable' 'Essential: yes'
|
|
buildsimplenativepackage 'fdisk' 'all' '2.30.2' 'unstable' 'XB-Important: yes'
|
|
buildsimplenativepackage 'linux-image' 'all' '4.9.80' 'unstable'
|
|
buildsimplenativepackage 'hold-me' 'all' '1.0' 'unstable'
|
|
buildsimplenativepackage 'remove-me' 'all' '1.0' 'unstable'
|
|
buildsimplenativepackage 'system-base' 'all' '1.0' 'unstable' 'Depends: unrelated, base-files, fdisk, linux-image, hold-me, remove-me'
|
|
setupaptarchive
|
|
|
|
testsuccess aptget install unrelated debhelper -y
|
|
testdpkginstalled 'unrelated' 'debhelper' 'po-debconf'
|
|
|
|
testmarkedauto 'po-debconf'
|
|
testsuccess aptget remove debhelper -y
|
|
testdpkgnotinstalled 'debhelper'
|
|
testdpkginstalled 'po-debconf' 'unrelated'
|
|
echo 'unrelated purge' | dpkg --set-selections
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
|
|
echo 'APT::NeverAutoRemove { "^debc.*nf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget autoremove -s
|
|
for sudouser in '_apt' ''; do
|
|
if [ -n "$sudouser" ]; then
|
|
export SUDO_USER="$sudouser"
|
|
AUTOREMOVE='sudo apt autoremove'
|
|
else
|
|
unset SUDO_USER
|
|
AUTOREMOVE='apt autoremove'
|
|
fi
|
|
testequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following package was automatically installed and is no longer required:
|
|
po-debconf
|
|
Use '$AUTOREMOVE' to remove it.
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s
|
|
testequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
1 package was automatically installed and is no longer required.
|
|
Use '$AUTOREMOVE' to remove it.
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
|
|
testequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
Calculating upgrade...
|
|
The following package was automatically installed and is no longer required:
|
|
po-debconf
|
|
Use '$AUTOREMOVE' to remove it.
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
|
|
done
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget install -s --autoremove
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
Calculating upgrade...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget upgrade -s --autoremove
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget install -s '?garbage-'
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget remove -s '?garbage'
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
Calculating upgrade...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget upgrade -s '?garbage-'
|
|
echo 'APT::Get::AutomaticRemove "true";' > rootdir/etc/apt/apt.conf.d/autoremoval
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
po-debconf
|
|
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv po-debconf [1.0.16]' aptget install -s
|
|
testequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
Calculating upgrade...
|
|
The following package was automatically installed and is no longer required:
|
|
po-debconf
|
|
Use 'apt autoremove' to remove it.
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
|
|
rm -f rootdir/etc/apt/apt.conf.d/autoremoval
|
|
|
|
testdpkginstalled 'po-debconf'
|
|
|
|
echo 'APT::NeverAutoRemove { "^po-debconf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
|
|
testsuccess aptget autoremove -y
|
|
testdpkginstalled 'po-debconf'
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
|
|
echo 'APT::NeverAutoRemove { "^po-.*$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
|
|
testsuccess aptget autoremove -y
|
|
testdpkginstalled "po-debconf"
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
|
|
rm rootdir/etc/apt/apt.conf.d/00autoremove
|
|
testsuccess aptget autoremove -y
|
|
testdpkgnotinstalled 'po-debconf'
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
testmarkedauto
|
|
|
|
sed rootdir/var/log/apt/history.log -e '/^Commandline: / d' \
|
|
-e '/^Start-Date: / d' -e '/^End-Date: / d' \
|
|
-e '/^Requested-By: / d' \
|
|
-e 's#), #)\nInstall: #g' | sort -u > apt-history.log
|
|
testfileequal 'apt-history.log' '
|
|
Install: debhelper:i386 (8.0.0)
|
|
Install: po-debconf:i386 (1.0.16, automatic)
|
|
Install: unrelated:i386 (1)
|
|
Remove: debhelper:i386 (8.0.0)
|
|
Remove: po-debconf:i386 (1.0.16)'
|
|
|
|
testsuccess aptget install debhelper -y
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
testdpkginstalled 'debhelper' 'po-debconf'
|
|
testsuccess aptmark auto debhelper
|
|
|
|
testmarkedauto 'debhelper' 'po-debconf'
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
debhelper po-debconf
|
|
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
|
|
Remv debhelper [8.0.0]
|
|
Remv po-debconf [1.0.16]' aptget autoremove -s
|
|
testequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages were automatically installed and are no longer required:
|
|
debhelper po-debconf
|
|
Use 'apt autoremove' to remove them.
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s
|
|
testequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
2 packages were automatically installed and are no longer required.
|
|
Use 'apt autoremove' to remove them.
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
|
|
|
|
testsuccess aptmark hold debhelper
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget autoremove -s
|
|
|
|
testsuccess aptget autoremove debhelper -y --allow-change-held-packages
|
|
testdpkgnotinstalled 'po-debconf' 'debhelper'
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
testmarkedauto
|
|
testsuccess aptget install debhelper --solver apt -y -o Debug::pkgDepCache::Marker=1
|
|
testmarkedauto 'po-debconf'
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
|
|
testsuccess aptget install system-base debhelper -y
|
|
testdpkginstalled 'debhelper' 'po-debconf' 'system-base' 'base-files' 'fdisk' 'linux-image' 'hold-me' 'remove-me'
|
|
testsuccess aptmark hold 'hold-me'
|
|
echo 'APT::NeverAutoRemove { "^linux-image$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
|
|
testsuccess aptget remove system-base -y
|
|
testsuccess aptget autoremove -y -o Debug::pkgAutoRemove=yes
|
|
DEBUGLOG=${TMPWORKINGDIRECTORY}/rootdir/tmp/autoremove.debuglog
|
|
cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "$DEBUGLOG"
|
|
testsuccess grep -Fx 'Marking: fdisk:i386 2.30.2 (Important)' "$DEBUGLOG"
|
|
testsuccess grep -Fx 'Marking: base-files:i386 10 (Essential)' "$DEBUGLOG"
|
|
testsuccess grep -Fx 'Marking: unrelated:i386 1 (Manual-Installed)' "$DEBUGLOG"
|
|
testsuccess grep -Fx 'Marking: hold-me:i386 1.0 (Hold)' "$DEBUGLOG"
|
|
testsuccess grep -Fx 'Marking: po-debconf:i386 1.0.16 (Dependency)' "$DEBUGLOG"
|
|
testsuccess grep -Fx 'Marking: linux-image:i386 4.9.80 (Blacklisted [APT::NeverAutoRemove])' "$DEBUGLOG"
|
|
testdpkginstalled 'debhelper' 'po-debconf' 'base-files' 'fdisk' 'linux-image'
|
|
testdpkgstatus 'hi' '1' 'hold-me'
|
|
testdpkgnotinstalled 'remove-me'
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
|
|
insertinstalledpackage 'bar' 'all' '1' 'Depends: foo-provider'
|
|
insertinstalledpackage 'foo-multi1-1' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-multi (1)'
|
|
insertinstalledpackage 'foo-multi1-2' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-multi (2)'
|
|
insertinstalledpackage 'foo-multi1-3' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-multi (3)'
|
|
insertinstalledpackage 'foo-multi2-1' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-multi (1)'
|
|
insertinstalledpackage 'foo-multi2-2' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-multi (2)'
|
|
insertinstalledpackage 'foo-multi2-3' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-multi (3)'
|
|
insertinstalledpackage 'foo-plus-1' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-plus (1)'
|
|
insertinstalledpackage 'foo-plus-2' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-plus (2)'
|
|
insertinstalledpackage 'foo-plus-3' 'all' '1' 'Provides: foo-provider
|
|
Source: foo-plus (3)'
|
|
insertinstalledpackage 'foo-single-1' 'all' '1' 'Provides: foo-provider'
|
|
insertinstalledpackage 'foo-single-2' 'all' '1' 'Provides: foo-provider'
|
|
|
|
testsuccess aptmark auto 'foo-*'
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
foo-multi1-1 foo-multi1-2 foo-multi2-1 foo-multi2-2 foo-plus-1 foo-plus-2
|
|
0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
|
|
Remv foo-multi1-1 [1]
|
|
Remv foo-multi1-2 [1]
|
|
Remv foo-multi2-1 [1]
|
|
Remv foo-multi2-2 [1]
|
|
Remv foo-plus-1 [1]
|
|
Remv foo-plus-2 [1]' apt autoremove -s
|
|
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
foo-multi1-1* foo-multi1-2* foo-multi2-1* foo-multi2-2* foo-plus-1*
|
|
foo-plus-2*
|
|
0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
|
|
Purg foo-multi1-1 [1]
|
|
Purg foo-multi1-2 [1]
|
|
Purg foo-multi2-1 [1]
|
|
Purg foo-multi2-2 [1]
|
|
Purg foo-plus-1 [1]
|
|
Purg foo-plus-2 [1]' apt autopurge -s
|
|
|
|
testdpkgstatus 'pi' '1' 'unrelated'
|
|
testsuccess apt purge unrelated -y
|
|
|
|
insertinstalledpackage 'foo-has-update' 'all' '1'
|
|
insertpackage 'stable' 'foo-has-update' 'all' '2'
|
|
testsuccess aptmark auto 'foo-has-update'
|
|
|
|
setupaptarchive
|
|
|
|
# Test removed package version (with -V flag), when package has update
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages will be REMOVED:
|
|
foo-has-update (1)
|
|
foo-multi1-1 (1)
|
|
foo-multi1-2 (1)
|
|
foo-multi2-1 (1)
|
|
foo-multi2-2 (1)
|
|
foo-plus-1 (1)
|
|
foo-plus-2 (1)
|
|
0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded.
|
|
Remv foo-has-update [1]
|
|
Remv foo-multi1-1 [1]
|
|
Remv foo-multi1-2 [1]
|
|
Remv foo-multi2-1 [1]
|
|
Remv foo-multi2-2 [1]
|
|
Remv foo-plus-1 [1]
|
|
Remv foo-plus-2 [1]' apt autoremove -sV
|
|
|
|
# Test automatic removed package version (with -V flag), when package has update
|
|
testsuccessequal "Reading package lists...
|
|
Building dependency tree...
|
|
Reading state information...
|
|
The following packages were automatically installed and are no longer required:
|
|
foo-has-update (1)
|
|
foo-multi1-1 (1)
|
|
foo-multi1-2 (1)
|
|
foo-multi2-1 (1)
|
|
foo-multi2-2 (1)
|
|
foo-plus-1 (1)
|
|
foo-plus-2 (1)
|
|
Use 'apt autoremove' to remove them.
|
|
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt remove -sV
|