Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package yast2-update for openSUSE:Factory 
checked in at 2026-03-26 21:07:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-update (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-update.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-update"

Thu Mar 26 21:07:11 2026 rev:154 rq:1342605 version:5.0.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-update/yast2-update.changes        
2023-11-02 20:20:42.942170573 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-update.new.8177/yast2-update.changes      
2026-03-27 06:53:58.261019622 +0100
@@ -1,0 +2,6 @@
+Tue Mar 10 09:00:28 UTC 2026 - Michal Filka <[email protected]>
+
+- jsc#PED-14507
+  - Removed reference to update-desktop-files from spec file 
+  - 5.0.2
+-------------------------------------------------------------------

Old:
----
  yast2-update-5.0.1.tar.bz2

New:
----
  yast2-update-5.0.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-update.spec ++++++
--- /var/tmp/diff_new_pack.uCz0bu/_old  2026-03-27 06:53:58.769040595 +0100
+++ /var/tmp/diff_new_pack.uCz0bu/_new  2026-03-27 06:53:58.773040760 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package yast2-update
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # 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-update
-Version:        5.0.1
+Version:        5.0.2
 Release:        0
 Summary:        YaST2 - Update
 Group:          System/YaST
@@ -26,7 +26,6 @@
 
 Source0:        %{name}-%{version}.tar.bz2
 
-BuildRequires:  update-desktop-files
 BuildRequires:  yast2-devtools >= 4.2.2
 BuildRequires:  yast2-ruby-bindings >= 1.0.0
 # Product#register_target

++++++ yast2-update-5.0.1.tar.bz2 -> yast2-update-5.0.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/.github/workflows/ci.yml 
new/yast2-update-5.0.2/.github/workflows/ci.yml
--- old/yast2-update-5.0.1/.github/workflows/ci.yml     2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/.github/workflows/ci.yml     2026-03-25 
18:39:21.000000000 +0100
@@ -1,9 +1,8 @@
-
 # See 
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
 
 name: CI
 
-on: [push, pull_request]
+on: [ push, pull_request ]
 
 jobs:
   Tests:
@@ -12,33 +11,32 @@
     strategy:
       fail-fast: false
       matrix:
-        distro:  [ "tumbleweed", "leap_latest" ]
+        distro: [ "tumbleweed" ]
 
     container:
       image: 
registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby
 
     steps:
+      - name: Git Checkout
+        uses: actions/checkout@v2
 
-    - name: Git Checkout
-      uses: actions/checkout@v2
-
-    # just for easier debugging...
-    - name: Inspect Installed Packages
-      run: rpm -qa | sort
-
-    - name: Unit Tests
-      run: rake test:unit
-      # enable code coverage reporting
-      env:
-        COVERAGE: 1
-
-    # 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 }}
+      # just for easier debugging...
+      - name: Inspect Installed Packages
+        run: rpm -qa | sort
+
+      - name: Unit Tests
+        run: rake test:unit
+        # enable code coverage reporting
+        env:
+          COVERAGE: 1
+
+      # 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 }}
 
   Rubocop:
     runs-on: ubuntu-latest
@@ -46,37 +44,38 @@
     strategy:
       fail-fast: false
       matrix:
-        distro: [ "leap_latest" ]
+        distro: [ "tumbleweed" ]
 
     container:
       image: 
registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby
 
     steps:
+      - name: Git Checkout
+        uses: actions/checkout@v2
 
-    - name: Git Checkout
-      uses: actions/checkout@v2
-
-    - name: Rubocop
-      run: rake check:rubocop
+      - name: Rubocop
+        run: rake check:rubocop
 
   Package:
+    # skip in master, but run in forks
+    if:  github.ref_name != 'master' || github.repository_owner != 'yast'
+
     runs-on: ubuntu-latest
 
     strategy:
       fail-fast: false
       matrix:
-        distro:  [ "tumbleweed", "leap_latest" ]
+        distro: [ "tumbleweed" ]
 
     container:
       image: 
registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby
 
     steps:
+      - name: Git Checkout
+        uses: actions/checkout@v2
 
-    - name: Git Checkout
-      uses: actions/checkout@v2
-
-    - name: Package Build
-      run: yast-ci-ruby -o package
+      - name: Package Build
+        run: yast-ci-ruby -o package
 
   Yardoc:
     runs-on: ubuntu-latest
@@ -84,18 +83,17 @@
     strategy:
       fail-fast: false
       matrix:
-        distro: [ "leap_latest" ]
+        distro: [ "tumbleweed" ]
 
     container:
       image: 
registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby
 
     steps:
+      - name: Git Checkout
+        uses: actions/checkout@v2
 
-    - name: Git Checkout
-      uses: actions/checkout@v2
-
-    - name: Yardoc
-      run: rake check:doc
+      - name: Yardoc
+        run: rake check:doc
 
   # downloading the Docker image takes some time so bundling several fast
   # checks into one job avoids that overhead
@@ -105,15 +103,14 @@
     strategy:
       fail-fast: false
       matrix:
-        distro: [ "leap_latest" ]
+        distro: [ "tumbleweed" ]
 
     container:
       image: 
registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby
 
     steps:
+      - name: Git Checkout
+        uses: actions/checkout@v2
 
-    - name: Git Checkout
-      uses: actions/checkout@v2
-
-    - name: POT Check
-      run: rake check:pot
+      - name: POT Check
+        run: rake check:pot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/.github/workflows/submit.yml 
new/yast2-update-5.0.2/.github/workflows/submit.yml
--- old/yast2-update-5.0.1/.github/workflows/submit.yml 1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-update-5.0.2/.github/workflows/submit.yml 2026-03-25 
18:39:21.000000000 +0100
@@ -0,0 +1,29 @@
+# See 
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
+
+name: OBS
+
+on:
+  # only when committing to master
+  push:
+    branches: master
+
+  # allow running manually from GitHub Web
+  workflow_dispatch:
+
+jobs:
+  submit:
+    # do not run in forks
+    if: github.repository_owner == 'yast'
+
+    runs-on: ubuntu-latest
+
+    # the default timeout is 6 hours, do not wait for that long if osc gets 
stucked
+    timeout-minutes: 30
+
+    steps:
+      - name: Submit the package
+        # see https://github.com/yast/actions/blob/master/submit/action.yml
+        uses: yast/actions/submit@master
+        with:
+          obs_user:     ${{ secrets.OBS_USER }}
+          obs_password: ${{ secrets.OBS_PASSWORD }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/.rubocop.yml 
new/yast2-update-5.0.2/.rubocop.yml
--- old/yast2-update-5.0.1/.rubocop.yml 2023-10-31 13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/.rubocop.yml 2026-03-25 18:39:21.000000000 +0100
@@ -1,6 +1,6 @@
 # use the shared Yast defaults
 inherit_from:
-  - /usr/share/YaST2/data/devtools/data/rubocop-0.71.0_yast_style.yml
+  - /usr/share/YaST2/data/devtools/data/rubocop-1.24.1_yast_style.yml
 
 # this needs more testing if we can have frozen string literals
 Style/FrozenStringLiteralComment:
@@ -18,7 +18,7 @@
 
 # Offense count: 25
 Metrics/AbcSize:
-  Max: 190
+  Max: 200
 
 # Offense count: 23
 # Configuration parameters: CountComments, ExcludedMethods.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/README.md 
new/yast2-update-5.0.2/README.md
--- old/yast2-update-5.0.1/README.md    2023-10-31 13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/README.md    2026-03-25 18:39:21.000000000 +0100
@@ -4,6 +4,5 @@
 
Status](https://coveralls.io/repos/github/yast/yast-update/badge.svg?branch=master)](https://coveralls.io/github/yast/yast-update?branch=master)
 [![Workflow 
Status](https://github.com/yast/yast-update/workflows/CI/badge.svg?branch=master)](
 https://github.com/yast/yast-update/actions?query=branch%3Amaster)
-[![Jenkins 
Status](https://ci.opensuse.org/buildStatus/icon?job=yast-yast-update-master)](
-https://ci.opensuse.org/view/Yast/job/yast-yast-update-master/)
+[![OBS](https://github.com/yast/yast-update/actions/workflows/submit.yml/badge.svg)](https://github.com/yast/yast-update/actions/workflows/submit.yml)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/Rakefile 
new/yast2-update-5.0.2/Rakefile
--- old/yast2-update-5.0.1/Rakefile     2023-10-31 13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/Rakefile     2026-03-25 18:39:21.000000000 +0100
@@ -11,5 +11,5 @@
 # additionally validate the control XML files as a part of the unit tests
 task "test:unit" do
   sh "xmllint --noout --relaxng 
#{Packaging::Configuration::YAST_DIR.shellescape}"\
-    "/control/control.rng control/*.xml"
+     "/control/control.rng control/*.xml"
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/package/yast2-update.changes 
new/yast2-update-5.0.2/package/yast2-update.changes
--- old/yast2-update-5.0.1/package/yast2-update.changes 2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/package/yast2-update.changes 2026-03-25 
18:39:21.000000000 +0100
@@ -1,4 +1,10 @@
 -------------------------------------------------------------------
+Tue Mar 10 09:00:28 UTC 2026 - Michal Filka <[email protected]>
+
+- jsc#PED-14507
+  - Removed reference to update-desktop-files from spec file 
+  - 5.0.2
+-------------------------------------------------------------------
 Tue Oct 31 12:29:07 UTC 2023 - Ladislav Slezák <[email protected]>
 
 - Drop the previously used repositories when going back to the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/package/yast2-update.spec 
new/yast2-update-5.0.2/package/yast2-update.spec
--- old/yast2-update-5.0.1/package/yast2-update.spec    2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/package/yast2-update.spec    2026-03-25 
18:39:21.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-update
-Version:        5.0.1
+Version:        5.0.2
 Release:        0
 Summary:        YaST2 - Update
 Group:          System/YaST
@@ -26,7 +26,6 @@
 
 Source0:        %{name}-%{version}.tar.bz2
 
-BuildRequires:  update-desktop-files
 BuildRequires:  yast2-devtools >= 4.2.2
 BuildRequires:  yast2-ruby-bindings >= 1.0.0
 # Product#register_target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/backup_proposal.rb 
new/yast2-update-5.0.2/src/clients/backup_proposal.rb
--- old/yast2-update-5.0.1/src/clients/backup_proposal.rb       2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/clients/backup_proposal.rb       2026-03-25 
18:39:21.000000000 +0100
@@ -38,7 +38,8 @@
       @param = Convert.to_map(WFM.Args(1))
       @ret = {}
 
-      if @func == "MakeProposal"
+      case @func
+      when "MakeProposal"
         @force_reset = Ops.get_boolean(@param, "force_reset", false)
         @language_changed = Ops.get_boolean(@param, "language_changed", false)
 
@@ -81,7 +82,7 @@
         end
 
         @ret = { "preformatted_proposal" => HTML.List(@tmp) }
-      elsif @func == "AskUser"
+      when "AskUser"
         @has_next = Ops.get_boolean(@param, "has_next", false)
 
         # call some function that displays a user dialog
@@ -96,7 +97,7 @@
         # Fill return map
 
         @ret = { "workflow_sequence" => @result }
-      elsif @func == "Description"
+      when "Description"
         # Fill return map.
         #
         # Static values do just nicely here, no need to call a function.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/inst_backup.rb 
new/yast2-update-5.0.2/src/clients/inst_backup.rb
--- old/yast2-update-5.0.1/src/clients/inst_backup.rb   2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/clients/inst_backup.rb   2026-03-25 
18:39:21.000000000 +0100
@@ -87,7 +87,7 @@
       # TRANSLATORS: help text for backup dialog during update 1/7
       @help_text = _(
         "<p>To avoid any loss of information during update,\n" \
-          "create a <b>backup</b> prior to updating.</p>\n"
+        "create a <b>backup</b> prior to updating.</p>\n"
       )
 
       # TRANSLATORS: help text for backup dialog during update 2/7
@@ -95,7 +95,7 @@
         @help_text,
         _(
           "<p><b>Warning:</b> This will not be a complete\n" \
-            "backup. Only modified files will be saved.</p>\n"
+          "backup. Only modified files will be saved.</p>\n"
         )
       )
 
@@ -110,7 +110,7 @@
         @help_text,
         _(
           "<p><b>Create a Backup of Modified Files:</b>\n" \
-            "Stores only those modified files that will be replaced during 
update.</p>\n"
+          "Stores only those modified files that will be replaced during 
update.</p>\n"
         )
       )
 
@@ -119,8 +119,8 @@
         @help_text,
         _(
           "<p><b>Create a Complete Backup of\n" \
-            "/etc/sysconfig:</b> This covers all configuration files that are 
part of the\n" \
-            "sysconfig mechanism, even those that will not be replaced.</p>\n"
+          "/etc/sysconfig:</b> This covers all configuration files that are 
part of the\n" \
+          "sysconfig mechanism, even those that will not be replaced.</p>\n"
         )
       )
 
@@ -129,9 +129,9 @@
         @help_text,
         _(
           "<p><b>Remove Old Backups from the Backup\n" \
-            "Directory:</b> If your current system already is the result of an 
earlier\n" \
-            "update, there may be old configuration file backups. Select this 
option to\n" \
-            "remove them.</p>\n"
+          "Directory:</b> If your current system already is the result of an 
earlier\n" \
+          "update, there may be old configuration file backups. Select this 
option to\n" \
+          "remove them.</p>\n"
         )
       )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/packages_proposal.rb 
new/yast2-update-5.0.2/src/clients/packages_proposal.rb
--- old/yast2-update-5.0.1/src/clients/packages_proposal.rb     2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/clients/packages_proposal.rb     2026-03-25 
18:39:21.000000000 +0100
@@ -49,7 +49,8 @@
         @param = Convert.to_map(WFM.Args(1))
         @ret = {}
 
-        if @func == "MakeProposal"
+        case @func
+        when "MakeProposal"
           @force_reset = Ops.get_boolean(@param, "force_reset", false)
           @language_changed = Ops.get_boolean(@param, "language_changed", 
false)
 
@@ -188,7 +189,7 @@
           ret_ref = arg_ref(@ret)
           Packages.CheckOldAddOns(ret_ref)
           @ret = ret_ref.value
-        elsif @func == "AskUser"
+        when "AskUser"
           @has_next = Ops.get_boolean(@param, "has_next", false)
 
           # call some function that displays a user dialog
@@ -202,7 +203,7 @@
 
           # Fill return map
           @ret = { "workflow_sequence" => @result }
-        elsif @func == "Description"
+        when "Description"
           # Fill return map.
           #
           # Static values do just nicely here, no need to call a function.
@@ -288,7 +289,7 @@
 
         if packages.size > ORPHANED_MAX_SIZE
           # TRANSLATORS: %s is replaced by a number of remaining items
-          summary << _("... and %s more") % (packages.size - ORPHANED_MAX_SIZE)
+          summary << (_("... and %s more") % (packages.size - 
ORPHANED_MAX_SIZE))
         end
 
         summary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/rootpart_proposal.rb 
new/yast2-update-5.0.2/src/clients/rootpart_proposal.rb
--- old/yast2-update-5.0.1/src/clients/rootpart_proposal.rb     2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/clients/rootpart_proposal.rb     2026-03-25 
18:39:21.000000000 +0100
@@ -43,7 +43,8 @@
       @param = Convert.to_map(WFM.Args(1))
       @ret = {}
 
-      if @func == "MakeProposal"
+      case @func
+      when "MakeProposal"
         @force_reset = Ops.get_boolean(@param, "force_reset", false)
         @language_changed = Ops.get_boolean(@param, "language_changed", false)
 
@@ -113,7 +114,7 @@
             @ret = Builtins.add(@ret, "raw_proposal", [])
           end
         end
-      elsif @func == "AskUser"
+      when "AskUser"
         @has_next = Ops.get_boolean(@param, "has_next", false)
 
         # call some function that displays a user dialog
@@ -138,7 +139,7 @@
           "workflow_sequence" => @result,
           "rootpart_changed"  => RootPart.selectedRootPartition != @tmp
         }
-      elsif @func == "Description"
+      when "Description"
         # Fill return map.
 
         @ret = if Mode.normal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/clients/update_proposal.rb 
new/yast2-update-5.0.2/src/clients/update_proposal.rb
--- old/yast2-update-5.0.1/src/clients/update_proposal.rb       2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/clients/update_proposal.rb       2026-03-25 
18:39:21.000000000 +0100
@@ -59,7 +59,8 @@
 
       @rpm_db_existency_checked_already = false
 
-      if @func == "MakeProposal"
+      case @func
+      when "MakeProposal"
         @force_reset = Ops.get_boolean(@param, "force_reset", false)
         @language_changed = Ops.get_boolean(@param, "language_changed", false)
 
@@ -147,9 +148,9 @@
               # %2 is the version being installed
               _(
                 "Updating system to another version (%1 -> %2) is not 
supported on " \
-                  "the running system.<br>\n" \
-                  "Boot from the installation media and use a normal 
upgrade\n" \
-                  "or disable software repositories of products with different 
versions.\n"
+                "the running system.<br>\n" \
+                "Boot from the installation media and use a normal upgrade\n" \
+                "or disable software repositories of products with different 
versions.\n"
               ),
               @update_from,
               @update_to
@@ -196,9 +197,9 @@
         # TRANSLATORS: proposal dialog help
         @update_options_help = _(
           "<p><b><big>Update Options</big></b> Select how your system will be 
updated.\n" \
-            "Choose if only installed packages should be updated or new ones 
should be\n" \
-            "installed as well (default). Decide whether unmaintained packages 
should be\n" \
-            "deleted.</p>\n"
+          "Choose if only installed packages should be updated or new ones 
should be\n" \
+          "installed as well (default). Decide whether unmaintained packages 
should be\n" \
+          "deleted.</p>\n"
         )
 
         @ret = {
@@ -218,12 +219,12 @@
         end
         # save the solver test case with details for later debugging
         Pkg.CreateSolverTestCase("/var/log/YaST2/solver-upgrade-proposal") if 
@ret["warning"]
-      elsif @func == "AskUser"
+      when "AskUser"
         # With proper control file, this should never be reached
         # TRANSLATORS: error message
         Report.Error(_("The update summary is read only and cannot be 
changed."))
         @ret = { "workflow_sequence" => :back }
-      elsif @func == "Description"
+      when "Description"
         # Fill return map.
         #
         # Static values do just nicely here, no need to call a function.
@@ -363,11 +364,12 @@
 
         ui_r = UI.UserInput
 
-        if ui_r == :cancel || ui_r == :abort
+        case ui_r
+        when :cancel, :abort
           ret = false
           file_found_or_error_skipped = true
           Builtins.y2milestone("Check failed, returning error.")
-        elsif ui_r == :retry
+        when :retry
           file_found_or_error_skipped = false
           Builtins.y2milestone("Trying again...")
           # } else if (ui_r == `ignore) {
@@ -474,9 +476,9 @@
       Update.solve_errors = Pkg.PkgSolve(false) ? 0 : Pkg.PkgSolveErrors
 
       log.info "Update compatibility: " \
-        "Update.ProductsCompatible: #{Update.ProductsCompatible}, " \
-        "Update.products_incompatible: #{Update.products_incompatible}, " \
-        "update_not_possible: #{update_not_possible}"
+               "Update.ProductsCompatible: #{Update.ProductsCompatible}, " \
+               "Update.products_incompatible: #{Update.products_incompatible}, 
" \
+               "update_not_possible: #{update_not_possible}"
 
       # check product compatibility
       if !(Update.ProductsCompatible || Update.products_incompatible) || 
update_not_possible
@@ -484,9 +486,9 @@
           # TRANSLATORS: continue-cancel popup
           _(
             "The installed product is not compatible with the product\n" \
-              "on the installation media. If you try to update using the\n" \
-              "current installation media, the system may not start or\n" \
-              "some applications may not run properly."
+            "on the installation media. If you try to update using the\n" \
+            "current installation media, the system may not start or\n" \
+            "some applications may not run properly."
           )
         )
           Update.IgnoreProductCompatibility
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/include/update/rootpart.rb 
new/yast2-update-5.0.2/src/include/update/rootpart.rb
--- old/yast2-update-5.0.1/src/include/update/rootpart.rb       2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/include/update/rootpart.rb       2026-03-25 
18:39:21.000000000 +0100
@@ -107,7 +107,7 @@
         # see bugzilla #288201
         # architecture needs to be valid when updating, not booting
         arch_is_valid = flavor == :boot || Ops.get_boolean(i, :arch_valid, 
false)
-        if withall || Ops.get_boolean(i, :valid, false) && arch_is_valid
+        if withall || (Ops.get_boolean(i, :valid, false) && arch_is_valid)
           # `ext2, `jfs, ...
           part_fs = Ops.get_symbol(i, :fs)
           part_fs_name = Builtins.tostring(part_fs)
@@ -211,8 +211,8 @@
         # TRANSLATORS: help text for root partition dialog (for boot)
         help_text = _(
           "<p>\n" \
-            "Select the partition or system to boot.\n" \
-            "</p>\n"
+          "Select the partition or system to boot.\n" \
+          "</p>\n"
         )
       else
         # TRANSLATORS: label for selection of root partition (for update)
@@ -221,8 +221,8 @@
         # TRANSLATORS: help text for root partition dialog (for update)
         help_text = _(
           "<p>\n" \
-            "Select the partition or system to update.\n" \
-            "</p>\n"
+          "Select the partition or system to update.\n" \
+          "</p>\n"
         )
 
         if flavor == :update_dialog || flavor == :update_dialog_proposal
@@ -236,9 +236,9 @@
         help_text,
         _(
           "<p>\n" \
-            "<b>Show All Partitions</b> expands the list to a\n" \
-            "general overview of your system's partitions.\n" \
-            "</p>\n"
+          "<b>Show All Partitions</b> expands the list to a\n" \
+          "general overview of your system's partitions.\n" \
+          "</p>\n"
         )
       )
 
@@ -284,10 +284,11 @@
       # finishing the target before selecting a new system to load
       Pkg.TargetFinish if flavor == :update_dialog
 
-      if flavor == :update_dialog
+      case flavor
+      when :update_dialog
         Wizard.SetContents(title, contents, help_text, true, true)
         Wizard.EnableAbortButton if Mode.autoupgrade
-      elsif flavor == :update_dialog_proposal
+      when :update_dialog_proposal
         Wizard.CreateDialog
         Wizard.SetContentsButtons(
           title,
@@ -374,15 +375,15 @@
             cont = false
             # TRANSLATORS: error message
             Report.Error(_("ReiserFS is not supported anymore.\n" \
-                            "Please migrate your data to another " \
-                            "filesystem before performing the upgrade.\n\n"))
+                           "Please migrate your data to another " \
+                           "filesystem before performing the upgrade.\n\n"))
           elsif (freshman[:name] || "unknown") == "unknown"
             cont = false
             Popup.Error(
               # TRANSLATORS: error popup
               _(
                 "No installed system that can be upgraded with this product 
was found\n" \
-                  "on the selected partition."
+                "on the selected partition."
               )
             )
           elsif !DoArchitecturesMatch(
@@ -393,7 +394,7 @@
               # TRANSLATORS: continue-cancel popup
               _(
                 "The architecture of the system installed in the selected 
partition\n " \
-                  "is different from the one of this product.\n"
+                "is different from the one of this product.\n"
               )
             )
           end
@@ -424,7 +425,7 @@
                 # TRANSLATORS: pop-up question
                 _(
                   "A possibly incomplete installation has been detected on the 
selected " \
-                    "partition.\nAre sure you want to use it anyway?"
+                  "partition.\nAre sure you want to use it anyway?"
                 ),
                 # TRANSLATORS: button label
                 _("&Yes, Use It"),
@@ -475,9 +476,9 @@
             # TRANSLATORS: error message
             _(
               "Initializing the system for upgrade has failed for unknown 
reason.\n" \
-                "It is highly recommended not to continue the upgrade 
process.\n" \
-                "\n" \
-                "Are you sure you want to continue?"
+              "It is highly recommended not to continue the upgrade 
process.\n" \
+              "\n" \
+              "Are you sure you want to continue?"
             ),
             # TRANSLATORS: button label
             _("&Yes, Continue"),
@@ -493,30 +494,27 @@
         end
 
         # not aborted
-        if ret != :back
-          # Target load failed, #466803
-          if Pkg.TargetLoad != true
-            Builtins.y2error("Pkg::TargetLoad failed")
-            if Popup.AnyQuestion(
-              Label.ErrorMsg,
-              # TRANSLATORS: error message
-              _(
-                "Initializing the system for upgrade has failed for unknown 
reason.\n" \
-                  "It is highly recommended not to continue the upgrade 
process.\n" \
-                  "\n" \
-                  "Are you sure you want to continue?"
-              ),
-              # TRANSLATORS: button label
-              _("&Yes, Continue"),
-              Label.CancelButton,
-              :focus_no
+        if ret != :back && (Pkg.TargetLoad != true)
+          Builtins.y2error("Pkg::TargetLoad failed")
+          if Popup.AnyQuestion(
+            Label.ErrorMsg,
+            # TRANSLATORS: error message
+            _(
+              "Initializing the system for upgrade has failed for unknown 
reason.\n" \
+              "It is highly recommended not to continue the upgrade 
process.\n" \
+              "\n" \
+              "Are you sure you want to continue?"
+            ),
+            # TRANSLATORS: button label
+            _("&Yes, Continue"),
+            Label.CancelButton,
+            :focus_no
+          )
+            ret = :back
+          else
+            Builtins.y2warning(
+              "User decided to continue despite the error above 
(Pkg::TargetLoad() failed)"
             )
-              ret = :back
-            else
-              Builtins.y2warning(
-                "User decided to continue despite the error above 
(Pkg::TargetLoad() failed)"
-              )
-            end
           end
         end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-update-5.0.1/src/lib/update/clients/inst_update_partition_auto.rb 
new/yast2-update-5.0.2/src/lib/update/clients/inst_update_partition_auto.rb
--- old/yast2-update-5.0.1/src/lib/update/clients/inst_update_partition_auto.rb 
2023-10-31 13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/lib/update/clients/inst_update_partition_auto.rb 
2026-03-25 18:39:21.000000000 +0100
@@ -31,6 +31,8 @@
     DATA_PATH = "/var/lib/YaST2/update_partition_auto.yaml".freeze
 
     def initialize
+      super
+
       Yast.import "Pkg"
       Yast.import "UI"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/modules/RootPart.rb 
new/yast2-update-5.0.2/src/modules/RootPart.rb
--- old/yast2-update-5.0.1/src/modules/RootPart.rb      2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/modules/RootPart.rb      2026-03-25 
18:39:21.000000000 +0100
@@ -186,7 +186,8 @@
         Builtins.y2milestone("Unmounting %1", info)
         type = Ops.get_string(info, :type, "")
         if type != ""
-          if type == "mount"
+          case type
+          when "mount"
             file = Ops.add(
               Installation.destdir,
               Ops.get_string(info, :mntpt, "")
@@ -197,16 +198,16 @@
                 Builtins.sformat(
                   _(
                     "Cannot unmount partition %1.\n" \
-                      "\n" \
-                      "It is currently in use. If the partition stays 
mounted,\n" \
-                      "the data may be lost. Unmount the partition manually\n" 
\
-                      "or restart your computer.\n"
+                    "\n" \
+                    "It is currently in use. If the partition stays 
mounted,\n" \
+                    "the data may be lost. Unmount the partition manually\n" \
+                    "or restart your computer.\n"
                   ),
                   file
                 )
               )
             end
-          elsif type == "swap"
+          when "swap"
             device = Ops.get_string(info, :device, "")
             # FIXME? is it safe?
             if SCR.Execute(
@@ -215,7 +216,7 @@
             ) != 0
               Builtins.y2error("Cannot deactivate swap %1", device)
             end
-          elsif type == "crypt"
+          when "crypt"
             dmname = Ops.get_string(info, :device, "")
             dmname = Ops.add(
               "cr_",
@@ -333,10 +334,11 @@
       loop do
         userinput = UI.UserInput
 
-        if userinput == :yes
+        case userinput
+        when :yes
           ret = true
           break
-        elsif userinput == :details
+        when :details
           curr_status = Convert.to_boolean(UI.QueryWidget(Id(:details), 
:Value))
 
           if curr_status == false
@@ -395,7 +397,15 @@
         UI.CloseDialog
 
         # failed
-        if Ops.get(cmd, "exit") != 0
+        if Ops.get(cmd, "exit") == 0
+          # add device into the list of already checked partitions (with exit 
status 0);
+          @already_checked_jfs_partitions = Builtins.add(
+            @already_checked_jfs_partitions,
+            device
+          )
+          Builtins.y2milestone("Result: %1", cmd)
+          return true
+        else
           Builtins.y2error("Result: %1", cmd)
           error_message.value = Builtins.tostring(Ops.get(cmd, "stderr"))
 
@@ -418,8 +428,8 @@
               # %1 is a device name such as /dev/hda5
               _(
                 "The file system check of device %1 has failed.\n" \
-                  "\n" \
-                  "Do you want to continue mounting the device?\n"
+                "\n" \
+                "Do you want to continue mounting the device?\n"
               ),
               device
             ),
@@ -429,14 +439,6 @@
             details
           )
           # succeeded
-        else
-          # add device into the list of already checked partitions (with exit 
status 0);
-          @already_checked_jfs_partitions = Builtins.add(
-            @already_checked_jfs_partitions,
-            device
-          )
-          Builtins.y2milestone("Result: %1", cmd)
-          return true
         end
       end
 
@@ -595,7 +597,7 @@
       fstab_file = Ops.add(Installation.destdir, "/etc/fstab")
 
       if FileUtils.Exists(fstab_file)
-        # Note: this is a copy from etc_fstab.scr file (yast2.rpm),
+        # NOTE: this is a copy from etc_fstab.scr file (yast2.rpm),
         # keep the files in sync!
         SCR.RegisterAgent(
           path(".target.etc.fstab"),
@@ -705,15 +707,15 @@
         SCR.Execute(path(".target.bash_output"), cmd)
       )
 
-      if Ops.get_integer(bootsizeout, "exit", -1) != 0
-        Builtins.y2error("Error: '%1' -> %2", cmd, bootsizeout)
-      else
+      if Ops.get_integer(bootsizeout, "exit", -1) == 0
         scriptout = Builtins.splitstring(
           Ops.get_string(bootsizeout, "stdout", ""),
           " "
         )
         Builtins.y2milestone("Scriptout: %1", scriptout)
         bootsize = Builtins.tointeger(Ops.get(scriptout, 1, "0"))
+      else
+        Builtins.y2error("Error: '%1' -> %2", cmd, bootsizeout)
       end
 
       if bootsize.nil? || bootsize == 0
@@ -745,11 +747,11 @@
         Builtins.sformat(
           _(
             "Your /boot partition is too small (%1 MB).\n" \
-              "We recommend a size of no less than %2 MB or else the new 
Kernel may not fit.\n" \
-              "It is safer to either enlarge the partition\n" \
-              "or not use a /boot partition at all.\n" \
-              "\n" \
-              "Do you want to continue updating the current system?\n"
+            "We recommend a size of no less than %2 MB or else the new Kernel 
may not fit.\n" \
+            "It is safer to either enlarge the partition\n" \
+            "or not use a /boot partition at all.\n" \
+            "\n" \
+            "Do you want to continue updating the current system?\n"
           ),
           current_bs,
           suggested_bs
@@ -760,12 +762,12 @@
         Builtins.y2warning(
           "User decided to continue despite small a /boot partition"
         )
-        return true
+        true
       else
         Builtins.y2milestone(
           "User decided not to continue with small /boot partition"
         )
-        return false
+        false
       end
     end
 
@@ -858,9 +860,7 @@
             end
           end
 
-          if fspath == "/boot" || fspath == "/boot/"
-            success = false unless CheckBootSize(spec)
-          end
+          success = false if (fspath == "/boot" || fspath == "/boot/") && 
!CheckBootSize(spec)
         elsif vfstype == "swap" && fspath == "swap"
           log.info("mounting #{spec} to #{fspath}")
 
@@ -873,10 +873,10 @@
             ret_from_shell = Convert.to_integer(
               SCR.Execute(path(".target.bash"), command)
             )
-            if ret_from_shell != 0
-              log.error("swapon failed: #{command}")
-            else
+            if ret_from_shell == 0
               AddMountedPartition(type: "swap", device: spec)
+            else
+              log.error("swapon failed: #{command}")
             end
           end
         end
@@ -909,13 +909,13 @@
               # %2 is output of the 'mount' command
               _(
                 "The partition %1 could not be mounted.\n" \
-                  "\n" \
-                  "%2\n" \
-                  "\n" \
-                  "If you are sure that the partition is not necessary for 
the\n" \
-                  "update (not a system partition), click Continue.\n" \
-                  "To check or fix the mount options, click Specify Mount 
Options.\n" \
-                  "To abort the update, click Cancel.\n"
+                "\n" \
+                "%2\n" \
+                "\n" \
+                "If you are sure that the partition is not necessary for 
the\n" \
+                "update (not a system partition), click Continue.\n" \
+                "To check or fix the mount options, click Specify Mount 
Options.\n" \
+                "To abort the update, click Cancel.\n"
               ),
               spec,
               error
@@ -1012,8 +1012,8 @@
       message = Builtins.sformat(
         _(
           "Partitions could not be mounted.\n" \
-            "\n" \
-            "Check the log file %1."
+          "\n" \
+          "Check the log file %1."
         ),
         Ops.add(Directory.logdir, "/y2log")
       )
@@ -1063,9 +1063,9 @@
             # TRANSLATORS: warning popup
             _(
               "Some partitions in the system on %1 are mounted by 
kernel-device name. This is\n" \
-                "not reliable for the update since kernel-device names are 
unfortunately not\n" \
-                "persistent. It is strongly recommended to start the old 
system and change the\n" \
-                "mount-by method to any other method for all partitions."
+              "not reliable for the update since kernel-device names are 
unfortunately not\n" \
+              "persistent. It is strongly recommended to start the old system 
and change the\n" \
+              "mount-by method to any other method for all partitions."
             ),
             root_device_current
           )
@@ -1081,12 +1081,12 @@
             # TRANSLATORS: warning popup
             _(
               "Some home directories in the system on %1 are encrypted. This 
release does not\n" \
-                "support cryptconfig any longer and those home directories " \
-                "will not be accessible\n" \
-                "after upgrade. In order to access these home directories, " \
-                "they need to be decrypted\n" \
-                "before performing upgrade.\n" \
-                "You can consider encrypting whole volume via LUKS."
+              "support cryptconfig any longer and those home directories " \
+              "will not be accessible\n" \
+              "after upgrade. In order to access these home directories, " \
+              "they need to be decrypted\n" \
+              "before performing upgrade.\n" \
+              "You can consider encrypting whole volume via LUKS."
             ),
             root_device_current
           )
@@ -1101,29 +1101,13 @@
         else
           tmp = ""
 
-          if !(
-              tmp_ref = arg_ref(tmp)
-              check_root_device_result = check_root_device(
-                root_device_current,
-                fstab,
-                tmp_ref
-              )
-              tmp = tmp_ref.value
-              check_root_device_result
-            )
-            Builtins.y2error("fstab has wrong root device!")
-
-            # TRANSLATORS: Error message, where %{root} and %{tmp} are 
replaced by
-            # device names (e.g., /dev/sda1 and /dev/sda2).
-            message = format(
-              _("The root partition in /etc/fstab has an invalid root 
device.\n" \
-                "It is currently mounted as %{root} but listed as %{tmp}."),
-              root: root_device_current,
-              tmp:  tmp
+          if (tmp_ref = arg_ref(tmp))
+            check_root_device(
+              root_device_current,
+              fstab,
+              tmp_ref
             )
 
-            success = false
-          else
             Builtins.y2milestone("fstab %1", fstab)
 
             legacy_filesystems =
@@ -1152,6 +1136,19 @@
               )
               success = false
             end
+          else
+            Builtins.y2error("fstab has wrong root device!")
+
+            # TRANSLATORS: Error message, where %{root} and %{tmp} are 
replaced by
+            # device names (e.g., /dev/sda1 and /dev/sda2).
+            message = format(
+              _("The root partition in /etc/fstab has an invalid root 
device.\n" \
+                "It is currently mounted as %{root} but listed as %{tmp}."),
+              root: root_device_current,
+              tmp:  tmp
+            )
+
+            success = false
           end
         end
       else
@@ -1170,19 +1167,19 @@
       )
       Builtins.y2milestone("activated %1", @activated)
 
-      if !success
-        Popup.Message(message)
-
-        # some mount failed, unmount all mounted fs
-        UnmountPartitions(false)
-        @did_try_mount_partitions = true
-      else
+      if success
         # enter the mount points of the newly mounted partitions
         update_staging!
         create_pre_snapshot
         Update.clean_backup
         create_backup
         inject_intsys_files
+      else
+        Popup.Message(message)
+
+        # some mount failed, unmount all mounted fs
+        UnmountPartitions(false)
+        @did_try_mount_partitions = true
       end
 
       success
@@ -1479,7 +1476,7 @@
 
       filesystems.each_with_index do |fs, counter|
         if UI.WidgetExists(Id("search_progress"))
-          percent = 100 * (counter + 1 / filesystems.size)
+          percent = 100 * (counter + (1 / filesystems.size))
           UI.ChangeWidget(Id("search_pb"), :Value, percent)
         end
 
@@ -1578,7 +1575,7 @@
     publish function: :SetSelectedToValid, type: "void ()"
     publish function: :UnmountPartitions, type: "void (boolean)"
     publish function: :AnyQuestionAnyButtonsDetails,
-            type:     "boolean (string, string, string, string, string)"
+      type:     "boolean (string, string, string, string, string)"
     publish function: :MountPartitions, type: "boolean (string)"
     publish function: :IncompleteInstallationDetected, type: "boolean (string)"
     publish function: :FindRootPartitions, type: "void ()"
@@ -1717,8 +1714,8 @@
 
       # log which devicegraph we operate on
       graph = "?"
-      graph = "probed" if devicegraph.object_id == probed.object_id
-      if devicegraph.object_id == staging.object_id
+      graph = "probed" if devicegraph.equal?(probed)
+      if devicegraph.equal?(staging)
         graph = "staging#" + 
Y2Storage::StorageManager.instance.staging_revision.to_s
       end
       log.info("fs_by_devicename(#{graph}, #{device_spec}) = #{"sid#" + 
fs.sid.to_s if fs}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/modules/SUSERelease.rb 
new/yast2-update-5.0.2/src/modules/SUSERelease.rb
--- old/yast2-update-5.0.1/src/modules/SUSERelease.rb   2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/modules/SUSERelease.rb   2026-03-25 
18:39:21.000000000 +0100
@@ -29,9 +29,6 @@
 
 module Yast
   class SUSEReleaseFileMissingError < StandardError
-    def initialize(message)
-      super message
-    end
   end
 
   class SUSEReleaseClass < Module
@@ -40,6 +37,8 @@
     RELEASE_FILE_PATH = "/etc/SuSE-release".freeze
 
     def initialize
+      super
+
       textdomain "update"
 
       Yast.import "FileUtils"
@@ -80,7 +79,7 @@
 
     # Removes all unneeded stuff such as architecture or product nickname
     def shorten(long_name)
-      long_name.gsub(/[ ]*\(.*/, "")
+      long_name.gsub(/ *\(.*/, "")
     end
 
     publish function: :ReleaseInformation, type: "string (string)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/src/modules/Update.rb 
new/yast2-update-5.0.2/src/modules/Update.rb
--- old/yast2-update-5.0.1/src/modules/Update.rb        2023-10-31 
13:43:56.000000000 +0100
+++ new/yast2-update-5.0.2/src/modules/Update.rb        2026-03-25 
18:39:21.000000000 +0100
@@ -947,7 +947,7 @@
 
       command = "tar cv -C '#{root}'"
       # no shell escaping here, but we backup reasonable files and want to 
allow globs
-      command << " " + paths_without_prefix.join(" ")
+      command << (" " + paths_without_prefix.join(" "))
       # use parallel gzip for faster compression (uses all available CPU cores)
       command << " | pigz - > '#{tarball_path}'"
       res = SCR.Execute(path(".target.bash_output"), command)
@@ -997,7 +997,7 @@
 
       if !FileUtils.Exists(windowmanager_sysconfig)
         log.warn "Sysconfig file #{windowmanager_sysconfig} does not exist, " \
-          "desktop upgrade will not be handled"
+                 "desktop upgrade will not be handled"
         return nil
       end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-update-5.0.1/test/update_test.rb 
new/yast2-update-5.0.2/test/update_test.rb
--- old/yast2-update-5.0.1/test/update_test.rb  2023-10-31 13:43:56.000000000 
+0100
+++ new/yast2-update-5.0.2/test/update_test.rb  2026-03-25 18:39:21.000000000 
+0100
@@ -53,7 +53,7 @@
     end
 
     it "returns product name from SUSE-release if os-release is missing and " \
-        "SUSE-release exists in Installation.destdir" do
+       "SUSE-release exists in Installation.destdir" do
       allow(Yast::Installation).to receive(:destdir)
         .and_return(File.join(DATA_DIR, "update-test-2"))
       expect(Yast::Update.installed_product).to eq("SUSE Linux Enterprise 
Server 11")
@@ -251,7 +251,7 @@
       it "logs info and error" do
         expect(Yast::Update.log).to receive(:info)
           .with("Version expected: opensuse-leap-15.0. " \
-            "Backup version: opensuse-tumbleweed-20180911")
+                "Backup version: opensuse-tumbleweed-20180911")
           .and_call_original
         expect(Yast::Update.log).to receive(:error).with(/not 
restored/).and_call_original
 
@@ -284,7 +284,7 @@
     end
 
     context "if there is no windowmanager sysconfig file present " \
-        "on the system selected for upgrade" do
+            "on the system selected for upgrade" do
       it "returns true as there is nothing to do" do
         default_product_control_desktop
         allow(Yast::FileUtils).to 
receive(:Exists).with(/windowmanager/).and_return(false)
@@ -425,10 +425,10 @@
           allow(Yast::ProductFeatures).to receive(:GetFeature)
             .with("software", "upgrade")
             .and_return("product_upgrades" => [{
-                          "from"               => "openSUSE",
-                          "to"                 => "SLES",
-                          "compatible_vendors" => ["openSUSE", "SLES LCC"]
-                        }])
+              "from"               => "openSUSE",
+              "to"                 => "SLES",
+              "compatible_vendors" => ["openSUSE", "SLES LCC"]
+            }])
         end
 
         it "does not set compatible vendors at all" do
@@ -443,9 +443,9 @@
             allow(Yast::ProductFeatures).to receive(:GetFeature)
               .with("software", "upgrade")
               .and_return("product_upgrades" => [{
-                            "from" => "openSUSE Leap",
-                            "to"   => "openSUSE Jump"
-                          }])
+                "from" => "openSUSE Leap",
+                "to"   => "openSUSE Jump"
+              }])
           end
 
           it "does not set compatible vendors at all" do
@@ -459,10 +459,10 @@
             allow(Yast::ProductFeatures).to receive(:GetFeature)
               .with("software", "upgrade")
               .and_return("product_upgrades" => [{
-                            "from"               => "openSUSE Leap",
-                            "to"                 => "openSUSE Jump",
-                            "compatible_vendors" => ["openSUSE", "SLES LCC"]
-                          }])
+                "from"               => "openSUSE Leap",
+                "to"                 => "openSUSE Jump",
+                "compatible_vendors" => ["openSUSE", "SLES LCC"]
+              }])
           end
 
           it "set it in the solver" do

Reply via email to