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)


Reply via email to