From 4ae40653b46e996fe96dc0e91503e985064e29aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Fri, 4 Jul 2014 10:06:11 +0200 Subject: [PATCH] use "predecessor" attribute to handle addon renames (bnc#883206) - 3.1.84 --- package/yast2-registration.changes | 7 +++++++ package/yast2-registration.spec | 2 +- src/lib/registration/addon.rb | 6 +++++- test/addon_spec.rb | 30 ++++++++++++++++++++++++++++++ test/factories.rb | 1 + 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/package/yast2-registration.changes b/package/yast2-registration.changes index 4716e763e..6d3bea68e 100644 --- a/package/yast2-registration.changes +++ b/package/yast2-registration.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Jul 4 07:55:33 UTC 2014 - lslezak@suse.cz + +- use "predecessor" attribute to handle addons/extensions renames + (bnc#883206) +- 3.1.84 + ------------------------------------------------------------------- Thu Jul 3 13:03:49 UTC 2014 - lslezak@suse.cz diff --git a/package/yast2-registration.spec b/package/yast2-registration.spec index 231c20139..9526067b5 100644 --- a/package/yast2-registration.spec +++ b/package/yast2-registration.spec @@ -17,7 +17,7 @@ Name: yast2-registration -Version: 3.1.83 +Version: 3.1.84 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff --git a/src/lib/registration/addon.rb b/src/lib/registration/addon.rb index 21b357810..246929f21 100644 --- a/src/lib/registration/addon.rb +++ b/src/lib/registration/addon.rb @@ -77,6 +77,7 @@ def create_addon_with_deps(root) :friendly_name, :identifier, :name, + :predecessor, :release_type, :version @@ -135,8 +136,11 @@ def available? @pure_addon.available != false end + # Checks whether this addon updates an old addon + # @param [Hash] old_addon addon Hash received from pkg-bindings + # @return [Boolean] true if it updates the old addon, false otherwise def updates_addon?(old_addon) - old_addon["name"] == identifier + old_addon["name"] == identifier || old_addon["name"] == predecessor end end diff --git a/test/addon_spec.rb b/test/addon_spec.rb index 531862ee2..f236f3131 100755 --- a/test/addon_spec.rb +++ b/test/addon_spec.rb @@ -196,7 +196,37 @@ it "returns true when the addon availability is not set" do expect(addon.selectable?).to be_true end + end + + describe "#updates_addon?" do + it "returns true if the old addon has the same name" do + product = addon_generator("zypper_name" => "sle-sdk") + + new_addon = Registration::Addon.new(product) + old_addon = { "name" => "sle-sdk", "version" => "12", "arch" => "x86_64" } + + expect(new_addon.updates_addon?(old_addon)).to be_true + end + + it "returns true if the old addon is a predecessor" do + # "sle-haegeo" (SLE11-SP2) has been renamed to "sle-ha-geo" (SLE12) + product = addon_generator("zypper_name" => "sle-ha-geo", + "predecessor" => "sle-haegeo") + new_addon = Registration::Addon.new(product) + old_addon = { "name" => "sle-haegeo", "version" => "12", "arch" => "x86_64" } + + expect(new_addon.updates_addon?(old_addon)).to be_true + end + + it "returns false if the old addon is different" do + product = addon_generator("zypper_name" => "sle-sdk") + + new_addon = Registration::Addon.new(product) + old_addon = { "name" => "sle-hae", "version" => "12", "arch" => "x86_64" } + + expect(new_addon.updates_addon?(old_addon)).to be_false + end end end diff --git a/test/factories.rb b/test/factories.rb index 83fdafa89..0a0220ab8 100644 --- a/test/factories.rb +++ b/test/factories.rb @@ -14,6 +14,7 @@ def suse_connect_product_generator(attrs={}) params['free'] = attrs.fetch('free', true) params['eula_url'] = attrs['eula_url'] params["extensions"] = attrs['extensions'] || [] + params["predecessor"] = attrs["predecessor"] params end