Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package yast2-metapackage-handler for openSUSE:Factory checked in at 2022-04-14 17:24:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-metapackage-handler (Old) and /work/SRC/openSUSE:Factory/.yast2-metapackage-handler.new.1941 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-metapackage-handler" Thu Apr 14 17:24:55 2022 rev:56 rq:969678 version:4.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-metapackage-handler/yast2-metapackage-handler.changes 2021-05-20 19:23:14.722397634 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-metapackage-handler.new.1941/yast2-metapackage-handler.changes 2022-04-14 17:25:26.807262079 +0200 @@ -1,0 +2,5 @@ +Wed Apr 06 13:24:58 UTC 2022 - Ladislav Slez??k <lsle...@suse.cz> + +- Bump version to 4.5.0 (bsc#1198109) + +------------------------------------------------------------------- Old: ---- yast2-metapackage-handler-4.4.1.tar.bz2 New: ---- yast2-metapackage-handler-4.5.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-metapackage-handler.spec ++++++ --- /var/tmp/diff_new_pack.F7NUU1/_old 2022-04-14 17:25:27.231262575 +0200 +++ /var/tmp/diff_new_pack.F7NUU1/_new 2022-04-14 17:25:27.239262584 +0200 @@ -1,7 +1,7 @@ # # spec file for package yast2-metapackage-handler # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: yast2-metapackage-handler -Version: 4.4.1 +Version: 4.5.0 Release: 0 Summary: YaST2 - Easy Installation of Add-on RPMs using Metapackages License: GPL-2.0-or-later ++++++ yast2-metapackage-handler-4.4.1.tar.bz2 -> yast2-metapackage-handler-4.5.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/.github/workflows/ci.yml new/yast2-metapackage-handler-4.5.0/.github/workflows/ci.yml --- old/yast2-metapackage-handler-4.4.1/.github/workflows/ci.yml 2021-05-19 17:21:29.000000000 +0200 +++ new/yast2-metapackage-handler-4.5.0/.github/workflows/ci.yml 2022-04-12 13:35:30.000000000 +0200 @@ -8,7 +8,14 @@ jobs: Tests: runs-on: ubuntu-latest - container: registry.opensuse.org/yast/head/containers/yast-ruby:latest + + strategy: + fail-fast: false + matrix: + distro: [ "tumbleweed", "leap_latest" ] + + container: + image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: @@ -27,13 +34,22 @@ # send the coverage report to coveralls.io - name: Coveralls Report + # send it only from the TW build to avoid duplicate submits + if: ${{ matrix.distro == 'tumbleweed' }} uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} Package: runs-on: ubuntu-latest - container: registry.opensuse.org/yast/head/containers/yast-ruby:latest + + strategy: + fail-fast: false + matrix: + distro: [ "tumbleweed", "leap_latest" ] + + container: + image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: @@ -45,7 +61,14 @@ Yardoc: runs-on: ubuntu-latest - container: registry.opensuse.org/yast/head/containers/yast-ruby:latest + + strategy: + fail-fast: false + matrix: + distro: [ "leap_latest" ] + + container: + image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: @@ -59,7 +82,14 @@ # checks into one job avoids that overhead Checks: runs-on: ubuntu-latest - container: registry.opensuse.org/yast/head/containers/yast-ruby:latest + + strategy: + fail-fast: false + matrix: + distro: [ "leap_latest" ] + + container: + image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/package/yast2-metapackage-handler.changes new/yast2-metapackage-handler-4.5.0/package/yast2-metapackage-handler.changes --- old/yast2-metapackage-handler-4.4.1/package/yast2-metapackage-handler.changes 2021-05-19 17:21:29.000000000 +0200 +++ new/yast2-metapackage-handler-4.5.0/package/yast2-metapackage-handler.changes 2022-04-12 13:35:30.000000000 +0200 @@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Wed Apr 06 13:24:58 UTC 2022 - Ladislav Slez??k <lsle...@suse.cz> + +- Bump version to 4.5.0 (bsc#1198109) + +------------------------------------------------------------------- Mon May 17 08:53:44 UTC 2021 - Dirk M??ller <dmuel...@suse.com> - only own the files, not the directories themselves (bsc#1184786) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/package/yast2-metapackage-handler.spec new/yast2-metapackage-handler-4.5.0/package/yast2-metapackage-handler.spec --- old/yast2-metapackage-handler-4.4.1/package/yast2-metapackage-handler.spec 2021-05-19 17:21:29.000000000 +0200 +++ new/yast2-metapackage-handler-4.5.0/package/yast2-metapackage-handler.spec 2022-04-12 13:35:30.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-metapackage-handler -Version: 4.4.1 +Version: 4.5.0 Release: 0 Summary: YaST2 - Easy Installation of Add-on RPMs using Metapackages License: GPL-2.0-or-later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/spec/OneClickInstallWorkerFunctions_spec.rb new/yast2-metapackage-handler-4.5.0/spec/OneClickInstallWorkerFunctions_spec.rb --- old/yast2-metapackage-handler-4.4.1/spec/OneClickInstallWorkerFunctions_spec.rb 2021-05-19 17:21:29.000000000 +0200 +++ new/yast2-metapackage-handler-4.5.0/spec/OneClickInstallWorkerFunctions_spec.rb 2022-04-12 13:35:30.000000000 +0200 @@ -117,4 +117,80 @@ end end end + + describe '#InstallPackages' do + before do + allow(Yast::Pkg).to receive(:ResolvableInstallRepo).and_return(true) + end + context "when package depedencies are resolved" do + before do + allow(Yast::Pkg).to receive(:PkgSolve).and_return(true) + end + it "installs packages" do + expect(subject.InstallPackages("vim")).to be true + end + end + context "when package depedencies are not resolved" do + before do + allow(Yast::Pkg).to receive(:PkgSolve).and_return(false) + end + it "installs packages if package selection is accepted" do + allow(Yast::PackagesUI).to receive(:RunPackageSelector).and_return(:accept) + expect(subject.InstallPackages("vim")).to be true + end + it "does not install packages if package selection is not accepted" do + allow(Yast::PackagesUI).to receive(:RunPackageSelector).and_return(:cancel) + expect(subject.InstallPackages("vim")).to be false + end + end + end + + describe '#InstallPatterns' do + context "when pattern depedencies are resolved" do + before do + allow(Yast::Pkg).to receive(:PkgSolve).and_return(true) + end + it "installs pattern" do + expect(subject.InstallPatterns("gnome")).to be true + end + end + context "when pattern depedencies are not resolved" do + before do + allow(Yast::Pkg).to receive(:PkgSolve).and_return(false) + end + it "installs pattern if package selection is accepted" do + allow(Yast::PackagesUI).to receive(:RunPackageSelector).and_return(:accept) + expect(subject.InstallPatterns("gnome")).to be true + end + it "does not install pattern if package selection is not accepted" do + allow(Yast::PackagesUI).to receive(:RunPackageSelector).and_return(:cancel) + expect(subject.InstallPatterns("gnome")).to be false + end + end + end + + describe '#RemovePackages' do + context "when package depedensies are resolved" do + before do + allow(Yast::Pkg).to receive(:PkgSolve).and_return(true) + end + it "removes installed package" do + expect(subject.RemovePackages("vim")).to be true + end + end + context "when package depedencies are not resolved" do + before do + allow(Yast::Pkg).to receive(:PkgSolve).and_return(false) + end + it "removes installed packages if package selection is accepted" do + allow(Yast::PackagesUI).to receive(:RunPackageSelector).and_return(:accept) + expect(subject.RemovePackages("vim")).to be true + end + it "does not remove installed packages if package selection is not accepted" do + allow(Yast::PackagesUI).to receive(:RunPackageSelector).and_return(:cancel) + expect(subject.RemovePackages("vim")).to be false + end + end + end + end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/spec/OneClickInstall_spec.rb new/yast2-metapackage-handler-4.5.0/spec/OneClickInstall_spec.rb --- old/yast2-metapackage-handler-4.4.1/spec/OneClickInstall_spec.rb 2021-05-19 17:21:29.000000000 +0200 +++ new/yast2-metapackage-handler-4.5.0/spec/OneClickInstall_spec.rb 2022-04-12 13:35:30.000000000 +0200 @@ -28,36 +28,172 @@ describe Yast::OneClickInstall do let(:filepath) { File.join(DATA_PATH, "vim.ymp") } let(:output) { "" } + let(:urls) { ["http://download.opensuse.org/tumbleweed/repo/oss/", + "http://download.opensuse.org/tumbleweed/repo/non-oss/"] } + let!(:repositories) { subject.instance_variable_set(:@repositories, + { urls[0] => { "name" => "oss" , "recommended" => "true" }, + urls[1] => { "name" => "non-oss" , "recommended" => "false" }}) } + let!(:software) { subject.instance_variable_set(:@software, + { "vim" => { "recommended" => "true" , "action" => "install" , "type" => "package" }, + "tftp" => { "recommended" => "false" , "action" => "install" , "type" => "package" }, + "x11" => { "recommended" => "true" , "action" => "install" , "type" => "pattern" }, + "sap_server" => { "recommended" => "true" , "action" => "remove" , "type" => "pattern" }}) } describe "#xml_from_file" do - context "ymp file parsed" do - it "parses the XML file" do - doc = subject.xml_from_file(filepath) - expect(doc).to be_instance_of(REXML::Document) - doc.write(output) - expect(output).to include("vim") - end + it "parses the XML file" do + doc = subject.xml_from_file(filepath) + expect(doc).to be_instance_of(REXML::Document) + doc.write(output) + expect(output).to include("vim") end end describe "#xpath_match" do - context "matching node" do - it "returns and array of elements, matching xpath" do - doc = REXML::Document.new(File.read(filepath)) - expect(subject.xpath_match(doc, "metapackage//url").first.text).to eq("http://download.opensuse.org/tumbleweed/repo/oss/") - end + it "returns and array of elements, matching xpath" do + doc = REXML::Document.new(File.read(filepath)) + expect(subject.xpath_match(doc, "metapackage//url").first.text).to eq(urls[0]) end end describe "#SetRequiredRepository" do - context "set repository to recommended" do - it "Ensures that the repository with the specified URL is selected for addition" do - url = "http://download.opensuse.org/tumbleweed/repo/oss/" - subject.instance_variable_set(:@repositories, { url => { "name" => "vim" , "recommended" => "false" }}) - subject.SetRequiredRepository(url) - repos = subject.instance_variable_get(:@repositories) - expect(repos[url]["name"]).to eql("vim") - expect(repos[url]["recommended"]).to eql("true") + it "Ensures that the repository with the specified URL is selected for addition" do + subject.instance_variable_set(:@repositories, { urls[0] => { "name" => "oss" , "recommended" => "false" }}) + subject.SetRequiredRepository(urls[0]) + repos = subject.instance_variable_get(:@repositories) + expect(repos[urls[0]]).to match_array( "name" => "oss" , "recommended" => "true" ) + end + end + + describe "#SetNonRequiredRepository" do + it "Ensures that the repository with the specified URL is not selected for addition" do + subject.instance_variable_set(:@repositories, { urls[1] => { "name" => "non-oss" , "recommended" => "true" }}) + subject.SetNonRequiredRepository(urls[1]) + repos = subject.instance_variable_get(:@repositories) + expect(repos[urls[1]]["name"]).to eql("non-oss") + expect(repos[urls[1]]["recommended"]).to eql("false") + end + end + + describe "#SetRequiredRepositories" do + it "Ensures that the repositories with the specified URL are selected for addition" do + subject.SetRequiredRepositories(urls) + repos = subject.instance_variable_get(:@repositories) + expect(repos[urls[0]]).to match_array( "name" => "oss" , "recommended" => "true" ) + expect(repos[urls[1]]).to match_array( "name" => "non-oss" , "recommended" => "true" ) + end + end + + describe "#GetRequiredRepositories" do + it "Returns a list of the URLs of the repositories currently selected for addition" do + repos = subject.GetRequiredRepositories + expect(repos).to match_array([urls[0]]) + end + end + + describe "#GetNonRequiredRepositories" do + it "Returns a list of the URLs of the repositories currently not selected for addition" do + repos = subject.GetNonRequiredRepositories + expect(repos).to match_array(urls[1]) + end + end + + describe "#GetRequiredSoftware" do + it "Returns a list of the names of the software currently selected for installation" do + software_to_install = subject.GetRequiredSoftware + expect(software_to_install).to match_array(["vim" , "x11"]) + end + end + + describe "#GetRequiredRemoveSoftware" do + it "Returns a list of the names of the software currently selected for removal" do + software_to_remove = subject.GetRequiredRemoveSoftware + expect(software_to_remove).to match_array(["sap_server"]) + end + end + + describe "#GetRequiredPackages" do + it "Returns a list of the names of the packages currently selected for installation" do + packages_to_install = subject.GetRequiredPackages + expect(packages_to_install).to match_array(["vim"]) + end + end + + describe "#GetRequiredPatterns" do + it "Returns a list of the names of the patterns currently selected for installation" do + patterns_to_install = subject.GetRequiredPatterns + expect(patterns_to_install).to match_array(["x11"]) + end + end + + describe "#HaveAnyRecommended" do + it "Returns boolean, depending on the existence of any recommended repositories or software" do + any_recommended = subject.HaveAnyRecommended + expect(any_recommended).to be true + end + end + + describe "#makeXMLFriendly" do + it "converts map structure (eg. @repositories) to a list of maps with a key element" do + flattened = subject.makeXMLFriendly(software) + expect(flattened).to match_array([ + {"recommended"=>"true", "action"=>"remove", "type"=>"pattern", "key"=>"sap_server"}, + {"recommended"=>"false", "action"=>"install", "type"=>"package", "key"=>"tftp"}, + {"recommended"=>"true", "action"=>"install", "type"=>"package", "key"=>"vim"}, + {"recommended"=>"true", "action"=>"install", "type"=>"pattern", "key"=>"x11"}]) + end + end + + describe "#fromXMLFriendly" do + it "converts back from makeXMLFriendly to original structure" do + flattened = [ + {"recommended"=>"true", "action"=>"remove", "type"=>"pattern", "key"=>"sap_server"}, + {"recommended"=>"false", "action"=>"install", "type"=>"package", "key"=>"tftp"}, + {"recommended"=>"true", "action"=>"install", "type"=>"package", "key"=>"vim"}, + {"recommended"=>"true", "action"=>"install", "type"=>"pattern", "key"=>"x11"}] + unflattened = subject.fromXMLFriendly(flattened) + expect(unflattened).to match_array(software) + end + end + + describe "#ToXML" do + it "serializes to XML file, according to OneClickInstall data structure" do + output_file = File.join(DATA_PATH, "serialized_result.xml") + subject.ToXML(output_file) + result = File.read(output_file) + expected_file = File.join(DATA_PATH, "serialized_expected.xml") + expected = File.read(expected_file) + expect(result).to eql(expected) + File.delete(output_file) + end + end + + describe "#FromXML" do + it "deserializes according to OneClickInstall data structure to XML" do + filename = File.join(DATA_PATH, "to_deserialize.xml") + subject.FromXML(filename) + expect(subject.instance_variable_get(:@software)).to match_array({"zdoom"=>{"action"=>"install", "recommended"=>"false", "type"=>"package"}}) + expect(subject.instance_variable_get(:@repositories)).to match_array({"https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/"=>{"name"=>"packman", "recommended"=>"false"}}) + expect(subject.instance_variable_get(:@remainSubscribed)).to be true + expect(subject.instance_variable_get(:@summary)).to be_empty + expect(subject.instance_variable_get(:@description)).to be_empty + expect(subject.instance_variable_get(:@name)).to be_empty + end + end + + describe "#Load" do + context "when loading YMP file" do + it "loads the Metapackage data from the YML file supplied for further processing" do + subject.Load(filepath) + expect(subject.instance_variable_get(:@repositories)[urls[0]]).to include("name"=>"openSUSE:Factory", + "summary"=>"The next openSUSE distribution", + "recommended"=>"true") + expect(subject.instance_variable_get(:@software)["vim"]).to include("summary"=>"Vi IMproved", + "recommended"=>"true", + "action"=>"install", + "type"=>"package") + expect(subject.instance_variable_get(:@name)).to eql("vim") + expect(subject.instance_variable_get(:@remainSubscribed)).to be true + expect(subject.instance_variable_get(:@description)).to include("Vim (Vi IMproved) is an almost compatible version of the UNIX editor") end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/spec/data/serialized_expected.xml new/yast2-metapackage-handler-4.5.0/spec/data/serialized_expected.xml --- old/yast2-metapackage-handler-4.4.1/spec/data/serialized_expected.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-metapackage-handler-4.5.0/spec/data/serialized_expected.xml 2022-04-12 13:35:30.000000000 +0200 @@ -0,0 +1,46 @@ +<?xml version="1.0"?> +<!DOCTYPE OneClickInstall SYSTEM "/un/defined"> +<OneClickInstall xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> + <description/> + <name/> + <remainSubscribed t="boolean">true</remainSubscribed> + <repositories t="list"> + <repository t="map"> + <key>http://download.opensuse.org/tumbleweed/repo/non-oss/</key> + <name>non-oss</name> + <recommended>false</recommended> + </repository> + <repository t="map"> + <key>http://download.opensuse.org/tumbleweed/repo/oss/</key> + <name>oss</name> + <recommended>true</recommended> + </repository> + </repositories> + <software t="list"> + <listentry t="map"> + <action>remove</action> + <key>sap_server</key> + <recommended>true</recommended> + <type>pattern</type> + </listentry> + <listentry t="map"> + <action>install</action> + <key>tftp</key> + <recommended>false</recommended> + <type>package</type> + </listentry> + <listentry t="map"> + <action>install</action> + <key>vim</key> + <recommended>true</recommended> + <type>package</type> + </listentry> + <listentry t="map"> + <action>install</action> + <key>x11</key> + <recommended>true</recommended> + <type>pattern</type> + </listentry> + </software> + <summary/> +</OneClickInstall> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.4.1/spec/data/to_deserialize.xml new/yast2-metapackage-handler-4.5.0/spec/data/to_deserialize.xml --- old/yast2-metapackage-handler-4.4.1/spec/data/to_deserialize.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-metapackage-handler-4.5.0/spec/data/to_deserialize.xml 2022-04-12 13:35:30.000000000 +0200 @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<!DOCTYPE OneClickInstall SYSTEM "/un/defined"> +<OneClickInstall xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> + <description/> + <name/> + <remainSubscribed t="boolean">true</remainSubscribed> + <repositories t="list"> + <repository t="map"> + <key>https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/</key> + <name>packman</name> + <recommended>false</recommended> + </repository> + </repositories> + <software t="list"> + <listentry t="map"> + <action>install</action> + <key>zdoom</key> + <recommended>false</recommended> + <type>package</type> + </listentry> + </software> + <summary/> +</OneClickInstall>