diff --git a/package/yast2-packager.changes b/package/yast2-packager.changes index ea6d7071..da5700e1 100644 --- a/package/yast2-packager.changes +++ b/package/yast2-packager.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Feb 20 14:25:37 UTC 2023 - Ladislav Slezák + +- Fixed a crash when selecting depending products (bsc#1208421) +- 4.5.16 + ------------------------------------------------------------------- Tue Feb 14 13:40:12 UTC 2023 - Martin Vidner diff --git a/package/yast2-packager.spec b/package/yast2-packager.spec index d447017f..054f48d8 100644 --- a/package/yast2-packager.spec +++ b/package/yast2-packager.spec @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 4.5.15 +Version: 4.5.16 Release: 0 Summary: YaST2 - Package Library License: GPL-2.0-or-later diff --git a/src/lib/y2packager/dialogs/addon_selector.rb b/src/lib/y2packager/dialogs/addon_selector.rb index 9b49291f..94d67614 100644 --- a/src/lib/y2packager/dialogs/addon_selector.rb +++ b/src/lib/y2packager/dialogs/addon_selector.rb @@ -155,7 +155,8 @@ def select_dependent_products selected_items.concat(p&.depends_on) end - selected_items.uniq!.compact! + selected_items.uniq! + selected_items.compact! Yast::UI.ChangeWidget(:addon_repos, :SelectedItems, selected_items) end diff --git a/test/addon_selector_test.rb b/test/addon_selector_test.rb index 9602f06d..008936c4 100755 --- a/test/addon_selector_test.rb +++ b/test/addon_selector_test.rb @@ -11,7 +11,9 @@ Y2Packager::RepoProductSpec.new(name: "sle-module-basesystem", dir: "/Basesystem", base: false, media_name: "SLE-15-Module-Basesystem 15.3-0"), Y2Packager::RepoProductSpec.new(name: "sle-module-legacy", dir: "/Legacy", - base: false, media_name: "SLE-15-Module-Legacy 15.3-0") + base: false, media_name: "SLE-15-Module-Legacy 15.3-0"), + Y2Packager::RepoProductSpec.new(name: "sle-module-ha", dir: "/HA", + base: false, media_name: "SLE-15-Module-HA 15.3-0", depends_on: ["/Basesystem"]) ] end @@ -126,4 +128,26 @@ end end end + + describe "#addon_repos_handler" do + it "selects the dependant products" do + # the product which just has been selected + allow(Yast::UI).to receive(:QueryWidget).with(Id(:addon_repos), :CurrentItem) + .and_return("/HA") + # all currently selected products + allow(Yast::UI).to receive(:QueryWidget).with(Id(:addon_repos), :SelectedItems) + .and_return(["/HA"]) + # refreshing the details + allow(Yast::UI).to receive(:ChangeWidget) + + # the dependant products are selected + expect(Yast::UI).to receive(:ChangeWidget) do |id, what, list| + if id == :addon_repos && what == :SelectedItems + expect(list).to include("/HA", "/Basesystem") + end + end + + subject.addon_repos_handler + end + end end