}
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));
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());
--- /dev/null
+#!/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