Skip to content

Commit

Permalink
Merge pull request #840 from shundhammer/huha-rel-notes
Browse files Browse the repository at this point in the history
Show Release Notes for Add-On Products
  • Loading branch information
shundhammer committed Mar 5, 2020
2 parents 1ec008a + 9da3c27 commit d9ec3cd
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 22 deletions.
6 changes: 6 additions & 0 deletions package/yast2-installation.changes
@@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Feb 27 15:03:36 UTC 2020 - Stefan Hundhammer <shundhammer@suse.com>

- Make sure to show release notes for add-on products (bsc#1158287)
- 4.2.36

-------------------------------------------------------------------
Fri Feb 21 09:45:10 UTC 2020 - Ladislav Slezák <lslezak@suse.cz>

Expand Down
2 changes: 1 addition & 1 deletion package/yast2-installation.spec
Expand Up @@ -16,7 +16,7 @@
#

Name: yast2-installation
Version: 4.2.35
Version: 4.2.36
Release: 0
Group: System/YaST
License: GPL-2.0-only
Expand Down
12 changes: 9 additions & 3 deletions src/lib/installation/clients/inst_download_release_notes.rb
Expand Up @@ -27,6 +27,7 @@
# $Id$

require "y2packager/product"
require "y2packager/product_reader"

Yast.import "InstData"
Yast.import "Pkg"
Expand Down Expand Up @@ -100,10 +101,15 @@ def main
def products
# installed may mean old (before upgrade) in initial stage
# product may not yet be selected although repo is already added
return Y2Packager::Product.with_status(:selected, :installed) unless Stage.initial
selected = Y2Packager::Product.with_status(:selected)
#
# Don't rely on Product.with_status() here, use force_repos (bsc#1158287):
# Otherwise we will only get products from the control file in the case
# of online media, and that means only base products, no add-ons.
all_products = Y2Packager::ProductReader.new.all_products(force_repos: true)
return all_products.select { |p| p.status?(:selected, :installed) } unless Stage.initial
selected = all_products.select { |p| p.status?(:selected) }
return selected unless selected.empty?
Y2Packager::Product.with_status(:available)
all_products.select { |p| p.status?(:available) }
end

# Refresh release notes UI
Expand Down
47 changes: 29 additions & 18 deletions test/lib/clients/inst_download_release_notes_test.rb
Expand Up @@ -9,6 +9,7 @@
describe "#main" do
let(:sles_relnotes) { instance_double(Y2Packager::ReleaseNotes, content: "SLES RN") }
let(:sdk_relnotes) { instance_double(Y2Packager::ReleaseNotes, content: "SDK RN") }
let(:products) { [sles, sdk] }
let(:language) { double("Yast::Language", language: "en_US") }

let(:sles) do
Expand All @@ -19,13 +20,24 @@
instance_double(Y2Packager::Product, short_name: "SDK", release_notes: sdk_relnotes)
end

let(:prod_reader) do
instance_double(Y2Packager::ProductReader)
end

let(:textmode) { true }
let(:packages_init_called) { true }
let(:sles_selected) { true }
let(:sdk_selected) { true }

before do
allow(Yast::UI).to receive(:TextMode).and_return(textmode)
allow(Y2Packager::Product).to receive(:with_status).with(:selected)
.and_return([sles, sdk])
allow(Y2Packager::ProductReader).to receive(:new).and_return(prod_reader)
allow(prod_reader).to receive(:all_products)
.with(force_repos: true).and_return(products)
allow(sles).to receive(:status?).with(:selected).and_return(sles_selected)
allow(sdk).to receive(:status?).with(:selected).and_return(sdk_selected)
allow(sles).to receive(:status?).with(:available).and_return(false)
allow(sdk).to receive(:status?).with(:available).and_return(!sdk_selected)
allow(Yast::Stage).to receive(:initial).and_return(true)
allow(Yast::Packages).to receive(:init_called).and_return(packages_init_called)
stub_const("Yast::Language", language)
Expand Down Expand Up @@ -102,7 +114,7 @@
end
end

context "when Packages module has not be initialized" do
context "when the Packages module has not been initialized" do
let(:packages_init_called) { false }

it "returns :auto" do
Expand All @@ -119,24 +131,22 @@
end
end

context "when some package is selected" do
let(:products) do
{ selected: [sles], available: [sdk] }
end
context "when some module is selected" do
let(:sles_selected) { true }
let(:sdk_selected) { false }

it "shows release notes for 'selected' packages" do
it "shows release notes for 'selected' modules" do
expect(sles).to receive(:release_notes)
expect(sdk).to_not receive(:release_notes)
client.main
end
end

context "when no package is selected" do
let(:products) do
{ selected: [], available: [sdk], installed: [sles] }
end
context "when no module is selected" do
let(:sles_selected) { false }
let(:sdk_selected) { false }

it "shows release notes for 'available' packages" do
it "shows release notes for 'available' modules" do
expect(sles).to_not receive(:release_notes)
expect(sdk).to receive(:release_notes)
client.main
Expand All @@ -145,16 +155,17 @@

context "when not running on initial stage" do
let(:other_product) { double("Y2Packager::Product") }

let(:products) do
{ available: [other_product], selected: [sdk], installed: [sles] }
end
let(:products) { [other_product, sles, sdk] }

before do
allow(Yast::Stage).to receive(:initial).and_return(false)
allow(other_product).to receive(:status?).with(:selected).and_return(false)
allow(other_product).to receive(:status?).with(:selected, :installed).and_return(false)
allow(sles).to receive(:status?).with(:selected, :installed).and_return(true)
allow(sdk).to receive(:status?).with(:selected, :installed).and_return(true)
end

it "shows release notes for 'selected' and 'available' packages" do
it "shows release notes for 'selected' and 'available' modules" do
expect(sles).to receive(:release_notes)
expect(sdk).to receive(:release_notes)
expect(other_product).to_not receive(:release_notes)
Expand Down

0 comments on commit d9ec3cd

Please sign in to comment.