diff options
-rw-r--r-- | apt-private/private-cacheset.cc | 5 | ||||
-rw-r--r-- | apt-private/private-output.cc | 5 | ||||
-rwxr-xr-x | test/integration/test-bug-753297-upgradable | 34 |
3 files changed, 42 insertions, 2 deletions
diff --git a/apt-private/private-cacheset.cc b/apt-private/private-cacheset.cc index e37e7b227..159e1d8f1 100644 --- a/apt-private/private-cacheset.cc +++ b/apt-private/private-cacheset.cc @@ -55,7 +55,10 @@ bool GetLocalitySortedVersionSet(pkgCacheFile &CacheFile, } else if (_config->FindB("APT::Cmd::Upgradable") == true) { - if(P.CurrentVer() && state.Upgradable()) + pkgPolicy *policy = CacheFile.GetPolicy(); + if(P.CurrentVer() && + state.Upgradable() && + policy->GetCandidateVer(P) != P.CurrentVer()) { pkgPolicy *policy = CacheFile.GetPolicy(); output_set.insert(policy->GetCandidateVer(P)); diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc index 8f1fb886e..2120b7a83 100644 --- a/apt-private/private-output.cc +++ b/apt-private/private-output.cc @@ -229,7 +229,10 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, /*{{{*/ std::string CandidateVerStr = GetCandidateVersion(CacheFile, P); std::string InstalledVerStr = GetInstalledVersion(CacheFile, P); std::string StatusStr; - if(P.CurrentVer() == V && state.Upgradable() && state.CandidateVer != NULL) + if(P.CurrentVer() == V && + state.Upgradable() && + state.CandidateVer != NULL && + policy->GetCandidateVer(P) != P.CurrentVer()) { strprintf(StatusStr, _("[installed,upgradable to: %s]"), CandidateVerStr.c_str()); diff --git a/test/integration/test-bug-753297-upgradable b/test/integration/test-bug-753297-upgradable new file mode 100755 index 000000000..068704b3e --- /dev/null +++ b/test/integration/test-bug-753297-upgradable @@ -0,0 +1,34 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +cat > rootdir/etc/apt/preferences <<EOF +Package: * +Pin: release testing +Pin-Priority: 600 + +Package: * +Pin: release unstable +Pin-Priority: 1 +EOF + +insertinstalledpackage 'foo' 'all' '1' +insertpackage 'testing' 'foo' 'all' '1' +insertpackage 'testing-updates' 'foo' 'all' '2' +insertpackage 'unstable' 'foo' 'all' '3' + +insertinstalledpackage 'bar' 'all' '1' +insertpackage 'testing' 'bar' 'all' '2' + +setupaptarchive + +testequal "Listing... +bar/testing 2 all [upgradable from: 1]" apt list --upgradable + +testequal "Listing... +bar/testing 2 all [upgradable from: 1] +foo/testing,now 1 all [installed]" apt list |