Skip to content

Commit

Permalink
Merge pull request #1207 from yast/register-target
Browse files Browse the repository at this point in the history
bsc#1193212: add Product#register_target
  • Loading branch information
imobachgs committed Dec 2, 2021
2 parents 23d5755 + a4c906d commit 5ff8848
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 14 deletions.
7 changes: 6 additions & 1 deletion library/packages/src/lib/y2packager/product.rb
Expand Up @@ -45,6 +45,8 @@ class Product
attr_reader :installation_package
# @return [Integer] repository for the installation_package
attr_reader :installation_package_repo
# @return [String] Registration target name used for registering the product
attr_reader :register_target

class << self
PKG_BINDINGS_ATTRS = ["name", "short_name", "display_name", "version", "arch",
Expand Down Expand Up @@ -77,6 +79,7 @@ def from_resolvable(product, installation_package = "",
display_name: product.display_name, version: product.version,
arch: product.arch, category: product.category,
vendor: product.vendor, order: displayorder,
register_target: product.register_target,
installation_package: installation_package
)
end
Expand Down Expand Up @@ -141,8 +144,9 @@ def with_status(*statuses)
# @param vendor [String] Vendor
# @param order [Integer] Display order
# @param installation_package [String] Installation package name
# @param register_target [String] Register target
def initialize(name: nil, short_name: nil, display_name: nil, version: nil, arch: nil,
category: nil, vendor: nil, order: nil, installation_package: nil)
category: nil, vendor: nil, order: nil, installation_package: nil, register_target: "")
@name = name
@short_name = short_name
@display_name = display_name
Expand All @@ -152,6 +156,7 @@ def initialize(name: nil, short_name: nil, display_name: nil, version: nil, arch
@vendor = vendor
@order = order
@installation_package = installation_package
@register_target = register_target
end

# Compare two different products
Expand Down
2 changes: 1 addition & 1 deletion library/packages/src/lib/y2packager/product_reader.rb
Expand Up @@ -159,7 +159,7 @@ def product_package(name, _repo_id = nil)
# read the available products, remove potential duplicates
# @return [Array<Hash>] pkg-bindings data structure
def zypp_products
products = Y2Packager::Resolvable.find(kind: :product)
products = Y2Packager::Resolvable.find({ kind: :product }, [:register_target])

# remove duplicates, there might be different flavors ("DVD"/"POOL")
# or archs (x86_64/i586), when selecting the product to install later
Expand Down
25 changes: 14 additions & 11 deletions library/packages/test/y2packager/product_reader_test.rb
Expand Up @@ -33,19 +33,20 @@
end

it "returns empty list if there is no product" do
expect(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
expect(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return([])
expect(subject.available_base_products).to eq([])
end

it "returns Installation::Product objects" do
expect(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
expect(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return(products)
expect(subject.available_base_products.first).to be_a(Y2Packager::Product)
end

it "returns the correct product properties" do
expect(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
expect(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return(products)
.and_return(products)
ret = subject.available_base_products.first
expect(ret.name).to eq("SLES")
Expand All @@ -62,7 +63,7 @@
addon1 = Y2Packager::Resolvable.new(addon1_hash)
addon2 = Y2Packager::Resolvable.new(addon2_hash)

expect(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
expect(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return([addon2, addon1, sp3])

expect(subject.available_base_products.size).to eq(1)
Expand All @@ -75,19 +76,21 @@
"name" => "SLES", "status" => :available, "source" => 1, "short_name" => "short_name",
"version" => "1.0", "arch" => "x86_64", "product_package" => "testpackage",
"display_name" => "display_name", "category" => "addon",
"vendor" => "SUSE LINUX Products GmbH, Nuernberg, Germany")
"vendor" => "SUSE LINUX Products GmbH, Nuernberg, Germany",
"register_target" => "")
end

let(:prod2) do
Y2Packager::Resolvable.new("kind" => :product,
"name" => "SLED", "status" => :available, "source" => 2, "short_name" => "short_name",
"version" => "1.0", "arch" => "x86_64", "product_package" => "testpackage",
"display_name" => "display_name", "category" => "addon",
"vendor" => "SUSE LINUX Products GmbH, Nuernberg, Germany")
"vendor" => "SUSE LINUX Products GmbH, Nuernberg, Germany",
"register_target" => "")
end

before do
allow(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
allow(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return(products)
end

Expand Down Expand Up @@ -120,7 +123,7 @@
end

it "returns the installed base product" do
expect(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
expect(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return(products + [base_prod])
expect(subject.installed_base_product.name).to eq("base_product")
end
Expand All @@ -139,7 +142,7 @@
end

before do
allow(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
allow(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return(products + [special_prod])
allow(Yast::Pkg).to receive(:PkgQueryProvides).with("system-installation()")
.and_return([])
Expand Down Expand Up @@ -196,7 +199,7 @@
installed = Y2Packager::Resolvable.new(installed_hash)

# return the installed product first to ensure the following available duplicate is not lost
allow(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
allow(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return([installed, available])

expect(subject.all_products).to_not be_empty
Expand All @@ -211,7 +214,7 @@
selected = Y2Packager::Resolvable.new(selected_hash)
available = Y2Packager::Resolvable.new(available_hash)

allow(Y2Packager::Resolvable).to receive(:find).with(kind: :product)
allow(Y2Packager::Resolvable).to receive(:find).with({ kind: :product }, [:register_target])
.and_return([selected, available])

expect(subject.all_products.size).to eq(1)
Expand Down
8 changes: 8 additions & 0 deletions package/yast2.changes
@@ -1,8 +1,16 @@
-------------------------------------------------------------------
Wed Dec 1 13:13:34 UTC 2021 - Imobach Gonzalez Sosa <igonzalezsosa@suse.com>

- Add register_target to the Y2Packager::Product class
(bsc#1193212).
- 4.4.25

-------------------------------------------------------------------
Wed Dec 1 11:06:33 UTC 2021 - Imobach Gonzalez Sosa <igonzalezsosa@suse.com>

- Do not crash when it is not possible to fetch the package
containing the release notes (bsc#1193148).
- 4.4.24

-------------------------------------------------------------------
Tue Nov 30 18:34:38 UTC 2021 - Josef Reidinger <jreidinger@suse.com>
Expand Down
2 changes: 1 addition & 1 deletion package/yast2.spec
Expand Up @@ -17,7 +17,7 @@


Name: yast2
Version: 4.4.24
Version: 4.4.25
Release: 0
Summary: YaST2 Main Package
License: GPL-2.0-only
Expand Down

0 comments on commit 5ff8848

Please sign in to comment.