Hello community, here is the log from the commit of package yast2-packager for openSUSE:Factory checked in at 2018-06-19 11:52:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-packager (Old) and /work/SRC/openSUSE:Factory/.yast2-packager.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-packager" Tue Jun 19 11:52:15 2018 rev:355 rq:616317 version:4.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-packager/yast2-packager.changes 2018-05-22 16:58:27.895860729 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-packager.new/yast2-packager.changes 2018-06-19 11:52:17.823353028 +0200 @@ -1,0 +2,34 @@ +Tue Jun 12 12:20:41 UTC 2018 - [email protected] + +- Repositories: sort by name if priorities are same (bsc#957372) +- 4.1.0 + +------------------------------------------------------------------- +Tue May 29 22:47:39 UTC 2018 - [email protected] + +- When running the installation in textmode, consider only the + preselected language when showing the license for extensions, + modules or add-ons (related to bsc#1094793). +- 4.0.67 + +------------------------------------------------------------------- +Tue May 29 15:11:39 UTC 2018 - [email protected] + +- During an upgrade, skip the base produce license dialog when the + same license was already accepted (bsc#1080450) +- 4.0.66 + +------------------------------------------------------------------- +Tue May 29 14:27:25 UTC 2018 - [email protected] + +- rename SLES_HPC => SLE_HPC (bsc#1095053) +- 4.0.65 + +------------------------------------------------------------------- +Tue May 29 11:12:41 UTC 2018 - [email protected] + +- When running the installation in textmode, consider only the + preselected language when showing the license (bsc#1094793). +- 4.0.64 + +------------------------------------------------------------------- Old: ---- yast2-packager-4.0.63.tar.bz2 New: ---- yast2-packager-4.1.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-packager.spec ++++++ --- /var/tmp/diff_new_pack.feOrVw/_old 2018-06-19 11:52:20.083269122 +0200 +++ /var/tmp/diff_new_pack.feOrVw/_new 2018-06-19 11:52:20.083269122 +0200 @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 4.0.63 +Version: 4.1.0 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ yast2-packager-4.0.63.tar.bz2 -> yast2-packager-4.1.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/package/yast2-packager.changes new/yast2-packager-4.1.0/package/yast2-packager.changes --- old/yast2-packager-4.0.63/package/yast2-packager.changes 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/package/yast2-packager.changes 2018-06-12 15:09:28.000000000 +0200 @@ -1,4 +1,38 @@ ------------------------------------------------------------------- +Tue Jun 12 12:20:41 UTC 2018 - [email protected] + +- Repositories: sort by name if priorities are same (bsc#957372) +- 4.1.0 + +------------------------------------------------------------------- +Tue May 29 22:47:39 UTC 2018 - [email protected] + +- When running the installation in textmode, consider only the + preselected language when showing the license for extensions, + modules or add-ons (related to bsc#1094793). +- 4.0.67 + +------------------------------------------------------------------- +Tue May 29 15:11:39 UTC 2018 - [email protected] + +- During an upgrade, skip the base produce license dialog when the + same license was already accepted (bsc#1080450) +- 4.0.66 + +------------------------------------------------------------------- +Tue May 29 14:27:25 UTC 2018 - [email protected] + +- rename SLES_HPC => SLE_HPC (bsc#1095053) +- 4.0.65 + +------------------------------------------------------------------- +Tue May 29 11:12:41 UTC 2018 - [email protected] + +- When running the installation in textmode, consider only the + preselected language when showing the license (bsc#1094793). +- 4.0.64 + +------------------------------------------------------------------- Thu May 17 10:51:58 UTC 2018 - [email protected] - Display an error popup when the FIPS compliant mode is active diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/package/yast2-packager.spec new/yast2-packager-4.1.0/package/yast2-packager.spec --- old/yast2-packager-4.0.63/package/yast2-packager.spec 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/package/yast2-packager.spec 2018-06-12 15:09:28.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-packager -Version: 4.0.63 +Version: 4.1.0 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/src/lib/packager/clients/repositories.rb new/yast2-packager-4.1.0/src/lib/packager/clients/repositories.rb --- old/yast2-packager-4.0.63/src/lib/packager/clients/repositories.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/src/lib/packager/clients/repositories.rb 2018-06-12 15:09:28.000000000 +0200 @@ -1396,17 +1396,11 @@ end def SortReposByPriority(repos) - repos = deep_copy(repos) # check the input - return deep_copy(repos) if repos.nil? + return nil unless repos - # sort the maps by "repos" key (in ascending order) - ret = Builtins.sort(repos) do |repo1, repo2| - Ops.less_than( - Ops.get_integer(repo1, "priority", @default_priority), - Ops.get_integer(repo2, "priority", @default_priority) - ) - end + # sort the maps by "repos" key (in ascending order) and if same use name (bsc#957372) + ret = repos.sort_by { |r| [r.fetch("priority", @default_priority), r["name"]] } Builtins.y2milestone("SortReposByPriority: %1 -> %2", repos, ret) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/src/lib/y2packager/clients/inst_product_upgrade_license.rb new/yast2-packager-4.1.0/src/lib/y2packager/clients/inst_product_upgrade_license.rb --- old/yast2-packager-4.0.63/src/lib/y2packager/clients/inst_product_upgrade_license.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/src/lib/y2packager/clients/inst_product_upgrade_license.rb 2018-06-12 15:09:28.000000000 +0200 @@ -25,7 +25,8 @@ # This client shows a license confirmation dialog for the upgraded base product # # The client will display an error and return :back if not product is found. - # If no license is found for the selected product it returns :auto. + # It returns true if no license is found or if the license was already + # accepted for the selected product. # The license is not displayed when going back in the workflow. # @see Y2Packager::Clients::InstProductLicense class InstProductUpgradeLicense < InstProductLicense @@ -43,7 +44,7 @@ return :back end - return :auto unless available_license? + return :auto if !available_license? || license_confirmed? log.info "Displaying license for product: #{product.inspect}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/src/lib/y2packager/widgets/product_license_translations.rb new/yast2-packager-4.1.0/src/lib/y2packager/widgets/product_license_translations.rb --- old/yast2-packager-4.0.63/src/lib/y2packager/widgets/product_license_translations.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/src/lib/y2packager/widgets/product_license_translations.rb 2018-06-12 15:09:28.000000000 +0200 @@ -15,6 +15,9 @@ require "y2packager/widgets/simple_language_selection" require "y2packager/widgets/product_license" +Yast.import "UI" +Yast.import "Stage" + module Y2Packager module Widgets # This widget display license translations for a given product @@ -68,15 +71,60 @@ # @return [Y2Packager::Widgets::SimpleLanguageSelection] def language_selection @language_selection ||= - Y2Packager::Widgets::SimpleLanguageSelection.new(product.license_locales, language) + Y2Packager::Widgets::SimpleLanguageSelection.new(available_locales, content_language) end - # Product selection widget + # Product selection widget # # @return [Widgets::ProductLicenseContent] def product_license @product_license ||= - Y2Packager::Widgets::ProductLicenseContent.new(product, language) + Y2Packager::Widgets::ProductLicenseContent.new(product, content_language) + end + + # Available license translations + # + # When running on textmode, only the preselected/given language is considered. + # see #default_language for further details. + # + # @return [Array<String>] Locale codes of the available translations + # @see #default_language + def available_locales + Yast::UI.TextMode ? [default_language] : product.license_locales + end + + # License translation language + # + # When running on textmode, it returns the preselected/default language. + # see #default_language for further details. + # + # @return [String] License content language + # @see #default_language + def content_language + Yast::UI.TextMode ? default_language : language + end + + # @return [String] Fallback language + DEFAULT_FALLBACK_LANGUAGE = "en_US".freeze + + # Default language + # + # For some languages (like Japanese, Chinese or Korean) YaST needs to use a fbiterm in order + # to display symbols correctly when running on textmode. However, if none of those languages + # is selected on boot, this special terminal won't be used. + # + # So during 1st stage and when running in textmode, it returns the preselected language (from + # install.inf). + # + # On an installed system, it prefers the given language. Finally, if the license translation + # is not available, the fallback language is returned. + # + # @return [String] Language code + def default_language + candidate_lang = Yast::Stage.initial ? Yast::Language.preselected : language + translated = product.license_locales.any? { |l| candidate_lang.start_with?(l) } + return candidate_lang if translated + DEFAULT_FALLBACK_LANGUAGE end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/src/modules/AddOnProduct.rb new/yast2-packager-4.1.0/src/modules/AddOnProduct.rb --- old/yast2-packager-4.0.63/src/modules/AddOnProduct.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/src/modules/AddOnProduct.rb 2018-06-12 15:09:28.000000000 +0200 @@ -22,10 +22,10 @@ # SLE12 HA GEO is now included in SLE15 HA "sle-ha-geo" => ["sle-ha"], "SUSE_SLES_SAP" => ["SLES_SAP"], - # SLES-12 with HPC module can be replaced by SLES_HPC-15 - "SLES" => ["SLES_HPC"], + # SLES-12 with HPC module can be replaced by SLE_HPC-15 + "SLES" => ["SLE_HPC"], # this is an internal product so far... - "SLE-HPC" => ["SLES_HPC"], + "SLE-HPC" => ["SLE_HPC"], # SMT is now integrated into the base SLES "sle-smt" => ["SLES"], # Live patching is a module now (bsc#1074154) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/src/modules/ProductLicense.rb new/yast2-packager-4.1.0/src/modules/ProductLicense.rb --- old/yast2-packager-4.0.63/src/modules/ProductLicense.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/src/modules/ProductLicense.rb 2018-06-12 15:09:28.000000000 +0200 @@ -657,6 +657,9 @@ ret end + # @return [Array<String>] Fallback languages + DEFAULT_FALLBACK_LANGUAGES = ["en_US", "en"].freeze + # FIXME: this is needed only by yast2-registration, fix it later # and make this method private # @@ -670,6 +673,18 @@ def DisplayLicenseDialogWithTitle(languages, back, license_language, licenses, id, caption) languages = deep_copy(languages) + # For some languages (like Japanese, Chinese or Korean) YaST needs to use a fbiterm in order + # to display symbols correctly when running on textmode. To avoid such problems, consider only + # the preselected (on installation) or the default language (on running system). This will + # setup fbiterm correctly. See bsc#1094793 for further information. + if Yast::UI.TextMode + lang = default_language + candidate_languages = [lang, lang[0..1]] + DEFAULT_FALLBACK_LANGUAGES + license_language = (candidate_languages & languages).first || "" + languages = [license_language] + log.info "Adjusted license language to #{license_language}" + end + contents = ( licenses_ref = arg_ref(licenses.value) result = GetLicenseDialog( @@ -1695,7 +1710,8 @@ log.info("License locales for product #{product_name.inspect}: #{locales.inspect}") locales.each do |locale| - license = Pkg.PrdGetLicenseToConfirm(product_name, locale) + license_locale = (Yast::UI.TextMode && locale.empty?) ? default_language : locale + license = Pkg.PrdGetLicenseToConfirm(product_name, license_locale) next if license.nil? || license.empty? found_license = true @@ -1731,6 +1747,13 @@ log.info("License path: #{path}") path end + + # Return the default language to be used in licenses + # + # @return [String] Default language + def default_language + Yast::Stage.initial ? Yast::Language.preselected : Yast::Language.language + end end ProductLicense = ProductLicenseClass.new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/test/lib/clients/inst_product_upgrade_license_test.rb new/yast2-packager-4.1.0/test/lib/clients/inst_product_upgrade_license_test.rb --- old/yast2-packager-4.0.63/test/lib/clients/inst_product_upgrade_license_test.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/test/lib/clients/inst_product_upgrade_license_test.rb 2018-06-12 15:09:28.000000000 +0200 @@ -56,6 +56,11 @@ expect(subject.main).to eq(:auto) end + it "returns :auto if the product license was already accepted" do + expect(product).to receive(:license_confirmed?).at_least(:once).and_return(true) + expect(subject.main).to eq(:auto) + end + it "displays the product license" do allow(Yast::Language).to receive(:language).and_return("en_US") expect_any_instance_of(Y2Packager::Dialogs::InstProductLicense).to receive(:run) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/test/lib/clients/repositories_test.rb new/yast2-packager-4.1.0/test/lib/clients/repositories_test.rb --- old/yast2-packager-4.0.63/test/lib/clients/repositories_test.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/test/lib/clients/repositories_test.rb 2018-06-12 15:09:28.000000000 +0200 @@ -105,4 +105,46 @@ end end end + + describe "#SortReposByPriority" do + it "returns nil if param is nil" do + expect(client.SortReposByPriority(nil)).to eq nil + end + + it "sorts by priorities" do + repos = [ + { "priority" => 10, "name" => "repo1" }, + { "priority" => 30, "name" => "repo2" }, + { "priority" => 20, "name" => "repo3" } + ] + + expected_output = [ + { "priority" => 10, "name" => "repo1" }, + { "priority" => 20, "name" => "repo3" }, + { "priority" => 30, "name" => "repo2" } + ] + + expect(client.SortReposByPriority(repos)).to eq expected_output + end + + it "sorts by name when priority is same" do + repos = [ + { "priority" => 10, "name" => "repo1" }, + { "priority" => 30, "name" => "repo2" }, + { "priority" => 20, "name" => "repo4" }, + { "priority" => 20, "name" => "repo3" }, + { "priority" => 20, "name" => "repo5" } + ] + + expected_output = [ + { "priority" => 10, "name" => "repo1" }, + { "priority" => 20, "name" => "repo3" }, + { "priority" => 20, "name" => "repo4" }, + { "priority" => 20, "name" => "repo5" }, + { "priority" => 30, "name" => "repo2" } + ] + + expect(client.SortReposByPriority(repos)).to eq expected_output + end + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/test/lib/widgets/product_license_translations_test.rb new/yast2-packager-4.1.0/test/lib/widgets/product_license_translations_test.rb --- old/yast2-packager-4.0.63/test/lib/widgets/product_license_translations_test.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/test/lib/widgets/product_license_translations_test.rb 2018-06-12 15:09:28.000000000 +0200 @@ -24,7 +24,7 @@ let(:language) { "de_DE" } let(:product) do - instance_double(Y2Packager::Product, license_locales: ["en_US"], license: "content") + instance_double(Y2Packager::Product, license_locales: ["en_US", "ja"], license: "content") end describe "#contents" do @@ -39,6 +39,65 @@ .with(product, language) widget.contents end + + context "when running on textmode" do + let(:preselected) { "ja_JP" } + + before do + allow(Yast::UI).to receive(:TextMode).and_return(true) + allow(Yast::Language).to receive(:preselected).and_return(preselected) + allow(Yast::Stage).to receive(:initial).and_return(initial) + end + + context "on installation" do + let(:initial) { true } + + it "the language selector includes only the preselected language" do + expect(Y2Packager::Widgets::SimpleLanguageSelection).to receive(:new) + .with([preselected], preselected) + widget.contents + end + + it "shows the product license in the preselected language" do + expect(Y2Packager::Widgets::ProductLicenseContent).to receive(:new) + .with(product, preselected) + widget.contents + end + + context "when there is no translation for the preselected language" do + let(:preselected) { "hu_HU" } + + it "the language selector includes only 'english'" do + expect(Y2Packager::Widgets::SimpleLanguageSelection).to receive(:new) + .with(["en_US"], "en_US") + widget.contents + end + + it "shows the product license in 'english'" do + expect(Y2Packager::Widgets::ProductLicenseContent).to receive(:new) + .with(product, "en_US") + widget.contents + end + end + end + + context "on the installed system" do + let(:initial) { false } + let(:language) { "ja_JP" } + + it "the language selector includes only the default language" do + expect(Y2Packager::Widgets::SimpleLanguageSelection).to receive(:new) + .with([language], language) + widget.contents + end + + it "shows the product license in the default language" do + expect(Y2Packager::Widgets::ProductLicenseContent).to receive(:new) + .with(product, language) + widget.contents + end + end + end end describe "#handle" do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-packager-4.0.63/test/product_license_test.rb new/yast2-packager-4.1.0/test/product_license_test.rb --- old/yast2-packager-4.0.63/test/product_license_test.rb 2018-05-18 11:28:37.000000000 +0200 +++ new/yast2-packager-4.1.0/test/product_license_test.rb 2018-06-12 15:09:28.000000000 +0200 @@ -12,6 +12,75 @@ let(:beta_file) { "README.BETA" } subject { Yast::ProductLicense } + describe "#DisplayLicenseDialogWithTitle (partial test)" do + context "when running in text mode" do + let(:langs) { ["en_US", "ja"] } + let(:lang) { "es_ES" } + let(:licenses) { Yast.arg_ref("en_US" => "en_US license") } + let(:license_id) { "id" } + let(:preselected) { "ja_JP" } + + before do + allow(Yast::Language).to receive(:GetLanguagesMap).and_return({}) + allow(Yast::UI).to receive(:TextMode).and_return(true) + allow(Yast::Language).to receive(:preselected).and_return(preselected) + allow(Yast::Stage).to receive(:initial).and_return(initial) + allow(Yast::Language).to receive(:language).and_return(lang) + end + + context "on the installation" do + let(:initial) { true } + + it "uses the preselected language" do + expect(subject).to receive(:GetLicenseDialog) + .with(["ja"], "ja", anything, license_id, false) + .and_call_original + subject.DisplayLicenseDialogWithTitle( + langs, "Back", lang, licenses, license_id, "License" + ) + end + + context "when there is no translation for the preselected language" do + let(:preselected) { "es_ES" } + + it "falls back to 'english'" do + expect(subject).to receive(:GetLicenseDialog) + .with(["en_US"], "en_US", anything, license_id, false) + .and_call_original + subject.DisplayLicenseDialogWithTitle( + langs, "Back", lang, licenses, license_id, "License" + ) + end + end + end + + context "on the installed system" do + let(:initial) { false } + let(:lang) { "ja_JP" } + + it "uses the default language" do + expect(subject).to receive(:GetLicenseDialog) + .with(["ja"], "ja", anything, license_id, false) + subject.DisplayLicenseDialogWithTitle( + langs, "Back", lang, licenses, license_id, "License" + ) + end + + context "when there is no translation for the default language" do + let(:lang) { "es_ES" } + + it "falls back to 'english'" do + expect(subject).to receive(:GetLicenseDialog) + .with(["en_US"], "en_US", anything, license_id, false) + subject.DisplayLicenseDialogWithTitle( + langs, "Back", lang, licenses, license_id, "License" + ) + end + end + end + end + end + describe "#HandleLicenseDialogRet" do before(:each) do # By default, always exit the dialog with :accepted (all licenses accepted)
