From 01a6e24cd1b601df2f20190b6118c4616e7fedf2 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 29 Sep 2010 19:55:04 +0200 Subject: [PATCH] * apt-pkg/depcache.cc: - do not check endpointer packages instead of only those which prevented NeverAutoRemove settings from having an effect (Closes: #598452) --- apt-pkg/depcache.h | 2 +- debian/changelog | 5 +++- test/integration/framework | 24 +++++++++++++++++++ test/integration/test-autoremove | 40 +++++++++++++++++++++++++------- 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 08e683558..2d3dbdf77 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -189,7 +189,7 @@ class pkgDepCache : protected pkgCache::Namespace DefaultRootSetFunc() : Configuration::MatchAgainstConfig("APT::NeverAutoRemove") {}; virtual ~DefaultRootSetFunc() {}; - bool InRootSet(const pkgCache::PkgIterator &pkg) { return pkg.end() == true && Match(pkg.Name()); }; + bool InRootSet(const pkgCache::PkgIterator &pkg) { return pkg.end() == false && Match(pkg.Name()); }; }; struct StateCache diff --git a/debian/changelog b/debian/changelog index 5e1333309..bf68f84e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,8 +6,11 @@ apt (0.8.6) UNRELEASED; urgency=low available one as it is maybe not an expected language (Closes: #597925) * apt-pkg/contrib/strutl.cc: - add a space between number and unit as required by SI (Closes: #598352) + * apt-pkg/depcache.cc: + - do not check endpointer packages instead of only those which prevented + NeverAutoRemove settings from having an effect (Closes: #598452) - -- David Kalnischkies Tue, 28 Sep 2010 17:25:22 +0200 + -- David Kalnischkies Wed, 29 Sep 2010 19:54:45 +0200 apt (0.8.5) unstable; urgency=low diff --git a/test/integration/framework b/test/integration/framework index 59d2f0e85..c09afcbad 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -499,3 +499,27 @@ testnopackage() { fi msgpass } + +testdpkginstalled() { + msgtest "Test for correctly installed package(s) with" "dpkg -l $*" + local PKGS="$(dpkg -l $* | grep '^[a-z]' | grep '^[^i]' | wc -l)" + if [ "$PKGS" != 0 ]; then + echo $PKGS + dpkg -l $* | grep '^[a-z]' + msgfail + return 1 + fi + msgpass +} + +testdpkgnoninstalled() { + msgtest "Test for correctly non-installed package(s) with" "dpkg -l $*" + local PKGS="$(dpkg -l $* | grep '^[a-z]' | grep '^[^u]' | wc -l)" + if [ "$PKGS" != 0 ]; then + echo + dpkg -l $* | grep '^[a-z]' + msgfail + return 1 + fi + msgpass +} diff --git a/test/integration/test-autoremove b/test/integration/test-autoremove index fb39e979a..7127b3d82 100755 --- a/test/integration/test-autoremove +++ b/test/integration/test-autoremove @@ -4,26 +4,50 @@ set -e local TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" +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 'unrelated' 'all' '1' 'unstable' +buildsimplenativepackage 'po-debconf' 'all' '1.0.16' 'unstable' +buildsimplenativepackage 'debhelper' 'all' '8.0.0' 'unstable' 'Depends: po-debconf' setupaptarchive aptget install unrelated debhelper -qq 2>&1 > /dev/null +testdpkginstalled 'unrelated' 'debhelper' 'po-debconf' -testfileequal "rootdir/var/lib/apt/extended_states" "Package: po-debconf +testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: po-debconf Architecture: i386 Auto-Installed: 1 -" +' aptget remove debhelper -y -qq 2>&1 > /dev/null +testdpkgnoninstalled 'debhelper' +testdpkginstalled 'po-debconf unrelated' + +echo 'APT::NeverAutoRemove { "^debc.*nf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove +testequal '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 +testdpkginstalled 'po-debconf' + +echo 'APT::NeverAutoRemove { "^po-debconf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove aptget autoremove -y -qq 2>&1 > /dev/null +testdpkginstalled 'po-debconf' -testfileequal "rootdir/var/lib/apt/extended_states" "" +echo 'APT::NeverAutoRemove { "^po-.*$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove +aptget autoremove -y -qq 2>&1 > /dev/null +testdpkginstalled "po-debconf" + +rm rootdir/etc/apt/apt.conf.d/00autoremove +aptget autoremove -y -qq 2>&1 > /dev/null +testdpkgnoninstalled 'po-debconf' + +testfileequal 'rootdir/var/lib/apt/extended_states' '' sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' -testfileequal "rootdir/var/log/apt/history.log" ' +testfileequal 'rootdir/var/log/apt/history.log' ' Install: unrelated:i386 (1), debhelper:i386 (8.0.0), po-debconf:i386 (1.0.16, automatic) Remove: debhelper:i386 (8.0.0) -- 2.45.2