summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-private/private-cacheset.cc5
-rw-r--r--apt-private/private-output.cc5
-rwxr-xr-xtest/integration/test-bug-753297-upgradable34
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