Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yast2-storage-ng for
openSUSE:Factory checked in at 2022-01-05 13:39:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-storage-ng (Old)
and /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.1896 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-storage-ng"
Wed Jan 5 13:39:20 2022 rev:115 rq:943568 version:4.4.30
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-storage-ng/yast2-storage-ng.changes
2021-12-21 18:40:28.337865259 +0100
+++
/work/SRC/openSUSE:Factory/.yast2-storage-ng.new.1896/yast2-storage-ng.changes
2022-01-05 13:39:34.797517433 +0100
@@ -1,0 +2,20 @@
+Mon Jan 3 09:22:05 UTC 2022 - Ladislav Slez??k <[email protected]>
+
+- Display LUKS2 configuration checkbox in the installer console
+ (related to jsc#SLE-21308)
+- 4.4.30
+
+-------------------------------------------------------------------
+Fri Dec 31 10:36:11 UTC 2021 - Josef Reidinger <[email protected]>
+
+- Adapt for ruby 3.1 (bsc#1193192)
+- 4.4.29
+
+-------------------------------------------------------------------
+Wed Dec 22 14:06:54 UTC 2021 - Ancor Gonzalez Sosa <[email protected]>
+
+- Dropped test clients proposal_testing and partitioner_testing in
+ favor of a more powerful one called storage_testing (related to
+ fate#318196).
+
+-------------------------------------------------------------------
Old:
----
yast2-storage-ng-4.4.28.tar.bz2
New:
----
yast2-storage-ng-4.4.30.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-storage-ng.spec ++++++
--- /var/tmp/diff_new_pack.V9G7XF/_old 2022-01-05 13:39:35.285517817 +0100
+++ /var/tmp/diff_new_pack.V9G7XF/_new 2022-01-05 13:39:35.293517824 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-storage-ng
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-storage-ng
-Version: 4.4.28
+Version: 4.4.30
Release: 0
Summary: YaST2 - Storage Configuration
License: GPL-2.0-only OR GPL-3.0-only
++++++ yast2-storage-ng-4.4.28.tar.bz2 -> yast2-storage-ng-4.4.30.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/package/yast2-storage-ng.changes
new/yast2-storage-ng-4.4.30/package/yast2-storage-ng.changes
--- old/yast2-storage-ng-4.4.28/package/yast2-storage-ng.changes
2021-12-20 17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/package/yast2-storage-ng.changes
2022-01-03 11:33:41.000000000 +0100
@@ -1,4 +1,24 @@
-------------------------------------------------------------------
+Mon Jan 3 09:22:05 UTC 2022 - Ladislav Slez??k <[email protected]>
+
+- Display LUKS2 configuration checkbox in the installer console
+ (related to jsc#SLE-21308)
+- 4.4.30
+
+-------------------------------------------------------------------
+Fri Dec 31 10:36:11 UTC 2021 - Josef Reidinger <[email protected]>
+
+- Adapt for ruby 3.1 (bsc#1193192)
+- 4.4.29
+
+-------------------------------------------------------------------
+Wed Dec 22 14:06:54 UTC 2021 - Ancor Gonzalez Sosa <[email protected]>
+
+- Dropped test clients proposal_testing and partitioner_testing in
+ favor of a more powerful one called storage_testing (related to
+ fate#318196).
+
+-------------------------------------------------------------------
Mon Dec 20 16:25:17 UTC 2021 - Ancor Gonzalez Sosa <[email protected]>
- Partitioner: added a warning if a required mount option, eg.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/package/yast2-storage-ng.spec
new/yast2-storage-ng-4.4.30/package/yast2-storage-ng.spec
--- old/yast2-storage-ng-4.4.28/package/yast2-storage-ng.spec 2021-12-20
17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/package/yast2-storage-ng.spec 2022-01-03
11:33:41.000000000 +0100
@@ -16,7 +16,7 @@
#
Name: yast2-storage-ng
-Version: 4.4.28
+Version: 4.4.30
Release: 0
Summary: YaST2 - Storage Configuration
License: GPL-2.0-only OR GPL-3.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/clients/partitioner_testing.rb
new/yast2-storage-ng-4.4.30/src/clients/partitioner_testing.rb
--- old/yast2-storage-ng-4.4.28/src/clients/partitioner_testing.rb
2021-12-20 17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/clients/partitioner_testing.rb
1970-01-01 01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-# Copyright (c) [2017] SUSE LLC
-#
-# All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as published
-# by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, contact SUSE LLC.
-#
-# To contact SUSE LLC about this file by physical or electronic mail, you may
-# find current contact information at www.suse.com.
-# TODO: just temporary client for testing partitioner with different hardware
setup
-# call with `yast2 partitioner_testing <path_to_yaml>`
-
-require "yast"
-require "y2partitioner/clients/main"
-require "y2storage"
-
-# Comment next line and run the file with root privileges to test system lock
-Y2Storage::StorageManager.create_test_instance
-
-arg = Yast::WFM.Args.first
-case arg
-when /.ya?ml$/
- Y2Storage::StorageManager.instance(mode: :rw).probe_from_yaml(arg)
-when /.xml$/
- # note: support only xml device graph, not xml output of probing commands
- Y2Storage::StorageManager.instance(mode: :rw).probe_from_xml(arg)
-else
- raise "Invalid testing parameter #{arg}, expecting foo.yml or foo.xml."
-end
-
-Y2Partitioner::Clients::Main.new.run(allow_commit: false)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/clients/proposal_testing.rb
new/yast2-storage-ng-4.4.30/src/clients/proposal_testing.rb
--- old/yast2-storage-ng-4.4.28/src/clients/proposal_testing.rb 2021-12-20
17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/clients/proposal_testing.rb 1970-01-01
01:00:00.000000000 +0100
@@ -1,64 +0,0 @@
-# Copyright (c) [2018] SUSE LLC
-#
-# All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as published
-# by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, contact SUSE LLC.
-#
-# To contact SUSE LLC about this file by physical or electronic mail, you may
-# find current contact information at www.suse.com.
-# TODO: just temporary client for testing partitioner with different hardware
setup
-# call with `yast2 partitioner_testing <path_to_yaml>`
-
-require "yast"
-require "y2storage"
-require "y2storage/clients/inst_disk_proposal"
-
-# Usage:
-#
-# /sbin/yast2 proposal_testing path_to_devicegraph_file [path_to_control_file]
-#
-# Example:
-#
-# $ Y2DIR=src/ /sbin/yast2 proposal_testing
test/data/devicegraphs/empty_disks.yml
-# test/data/control_files/volumes_ng/control.SLE-like.xml
-
-Yast.import "ProductFeatures"
-
-def load_devicegraph
- file = Yast::WFM.Args.first
-
- case file
- when /.ya?ml$/
- Y2Storage::StorageManager.instance(mode: :rw).probe_from_yaml(file)
- when /.xml$/
- # note: support only xml device graph, not xml output of probing commands
- Y2Storage::StorageManager.instance(mode: :rw).probe_from_xml(file)
- else
- raise "Invalid testing parameter #{file}, expecting foo.yml or foo.xml."
- end
-end
-
-def load_control_file
- file = Yast::WFM.Args.last
- return if file.nil?
-
- features = Yast::XML.XMLToYCPFile(file)
- Yast::ProductFeatures.Import(features)
-end
-
-Y2Storage::StorageManager.create_test_instance
-
-load_devicegraph
-load_control_file
-
-Y2Storage::Clients::InstDiskProposal.new.run
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/clients/storage_testing.rb
new/yast2-storage-ng-4.4.30/src/clients/storage_testing.rb
--- old/yast2-storage-ng-4.4.28/src/clients/storage_testing.rb 1970-01-01
01:00:00.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/clients/storage_testing.rb 2022-01-03
11:33:41.000000000 +0100
@@ -0,0 +1,25 @@
+# Copyright (c) [2021] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+# TODO: just temporary client for testing partitioner with different hardware
setup
+# call with `yast2 partitioner_testing <path_to_yaml>`
+
+require "yast"
+require "y2storage/clients/manual_test"
+
+Y2Storage::Clients::ManualTest.run
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/lib/installation/console/plugins/luks2_checkbox.rb
new/yast2-storage-ng-4.4.30/src/lib/installation/console/plugins/luks2_checkbox.rb
---
old/yast2-storage-ng-4.4.28/src/lib/installation/console/plugins/luks2_checkbox.rb
1970-01-01 01:00:00.000000000 +0100
+++
new/yast2-storage-ng-4.4.30/src/lib/installation/console/plugins/luks2_checkbox.rb
2022-01-03 11:33:41.000000000 +0100
@@ -0,0 +1,74 @@
+#
------------------------------------------------------------------------------
+# Copyright (c) 2021 SUSE LLC, All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of version 2 of the GNU General Public License as published by the
+# Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
+#
+#
------------------------------------------------------------------------------
+
+require "yast"
+
+require "cwm"
+require "installation/console/menu_plugin"
+require "y2storage/storage_env"
+
+module Installation
+ module Console
+ module Plugins
+ # define a checkbox for enabling the experimental LUKS2 support in the
installer
+ class LUKS2CheckBox < CWM::CheckBox
+ include Yast::Logger
+
+ def initialize
+ textdomain "storage"
+ end
+
+ # set the initial status
+ def init
+ check if Y2Storage::StorageEnv.instance.luks2_available?
+ end
+
+ def label
+ # TRANSLATORS: check box label
+ _("Enable Experimental LUKS2 Encryption Support")
+ end
+
+ def store
+ # the evaluated env variables are cached, we need to drop the cache
+ # when doing any change
+ Y2Storage::StorageEnv.instance.reset_cache
+
+ if checked?
+ ENV["YAST_LUKS2_AVAILABLE"] = "1"
+ else
+ ENV.delete("YAST_LUKS2_AVAILABLE")
+ end
+ end
+
+ def help
+ # TRANSLATORS: help text for the checkbox enabling LUKS2 support
+ _("<p>You can enable experimental LUKS2 encryption support in "\
+ "the YaST partitioner. It is not supported and is designed as a " \
+ "technology preview only.</p>")
+ end
+ end
+
+ # define the plugin
+ class LUKS2CheckBoxPlugin < MenuPlugin
+ def widget
+ LUKS2CheckBox.new
+ end
+
+ # at the end
+ def order
+ 2000
+ end
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/lib/y2storage/abstract_device_factory.rb
new/yast2-storage-ng-4.4.30/src/lib/y2storage/abstract_device_factory.rb
--- old/yast2-storage-ng-4.4.28/src/lib/y2storage/abstract_device_factory.rb
2021-12-20 17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/lib/y2storage/abstract_device_factory.rb
2022-01-03 11:33:41.000000000 +0100
@@ -74,7 +74,15 @@
if yaml_file.respond_to?(:read)
YAML.load_stream(yaml_file) { |doc| build_tree(doc) }
else
- File.open(yaml_file) { |file| YAML.load_stream(file, yaml_file) {
|doc| build_tree(doc) } }
+ File.open(yaml_file) do |file|
+ block = proc { |doc| build_tree(doc) }
+ old_ruby = RUBY_VERSION.start_with?("2.")
+ if old_ruby
+ YAML.load_stream(file, yaml_file, &block)
+ else
+ YAML.load_stream(file, filename: yaml_file, &block)
+ end
+ end
end
rescue SystemCallError => e
log.error(e.to_s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/lib/y2storage/clients/autoinst_manual_test.rb
new/yast2-storage-ng-4.4.30/src/lib/y2storage/clients/autoinst_manual_test.rb
---
old/yast2-storage-ng-4.4.28/src/lib/y2storage/clients/autoinst_manual_test.rb
1970-01-01 01:00:00.000000000 +0100
+++
new/yast2-storage-ng-4.4.30/src/lib/y2storage/clients/autoinst_manual_test.rb
2022-01-03 11:33:41.000000000 +0100
@@ -0,0 +1,79 @@
+#!/usr/bin/env ruby
+#
+# encoding: utf-8
+
+# Copyright (c) [2021] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require "yast"
+require "y2storage"
+require "installation/proposal_store"
+require "installation/proposal_runner"
+
+module Y2Storage
+ # Helper class to display only the partitioning AutoYaST proposal
+ class TestProposalStore < Installation::ProposalStore
+ # @return [Array<String>] proposal names in execution order, including
+ # the "_proposal" suffix
+ def proposal_names
+ ["partitions_proposal"]
+ end
+
+ # @return [Array<String>] single list of modules presentation order
+ def presentation_order
+ proposal_names
+ end
+ end
+
+ module Clients
+ # Simple client to compute and display the AutoYaST storage proposal
+ class AutoinstManualTest
+ # Constructor
+ def initialize
+ Yast.import "AutoinstStorage"
+ Yast.import "AutoinstConfig"
+ Yast.import "Wizard"
+ end
+
+ # Computes the AutoYaST partitioning proposal based on the current
profile and opens a dialog
+ # to display the result
+ #
+ # @return [Symbol]
+ def run
+ Yast::AutoinstStorage.Import(Yast::Profile.current["partitioning"])
+ display_autoinst_proposal
+ end
+
+ private
+
+ # @see #run
+ def display_autoinst_proposal
+ Yast::AutoinstConfig.Confirm = true
+ Yast::Wizard.OpenNextBackDialog
+ begin
+ ret = Installation::ProposalRunner.new(TestProposalStore).run
+ ensure
+ Yast::Wizard.CloseDialog
+ end
+
+ ret
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/lib/y2storage/clients/manual_test.rb
new/yast2-storage-ng-4.4.30/src/lib/y2storage/clients/manual_test.rb
--- old/yast2-storage-ng-4.4.28/src/lib/y2storage/clients/manual_test.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/lib/y2storage/clients/manual_test.rb
2022-01-03 11:33:41.000000000 +0100
@@ -0,0 +1,182 @@
+#!/usr/bin/env ruby
+#
+# encoding: utf-8
+
+# Copyright (c) [2021] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require "yast"
+require "y2storage"
+require "y2partitioner/clients/main"
+require "y2storage/clients/inst_disk_proposal"
+require "y2storage/clients/autoinst_manual_test"
+
+module Y2Storage
+ module Clients
+ # Client that runs any of the relevant parts of yast2-storage-ng into a
mocked environment
+ class ManualTest
+ include Yast::I18n
+
+ # Constructor
+ def initialize
+ textdomain "storage"
+
+ @action = nil
+ @command_error = nil
+ @devicegraph_path = nil
+ @profile_path = nil
+ @control_file_path = nil
+ end
+
+ # Parses the arguments and opens the corresponding dialog
+ def self.run
+ client = new
+ client.parse_args
+ client.run
+ end
+
+ # Parses the command line arguments
+ def parse_args
+ @action = args.first&.to_sym
+ return unless validate_action
+
+ @devicegraph_path = args[1]
+ return unless validate_devicegraph_path
+
+ if action == :autoinst
+ @profile_path = args[2]
+ @command_error = _("No AutoYaST profile provided") unless
profile_path
+ elsif action == :proposal
+ @control_file_path = args[2]
+ end
+ end
+
+ # Executes the client
+ def run
+ if command_error
+ display_help
+ return :abort
+ end
+
+ Y2Storage::StorageManager.create_test_instance
+ mock
+
+ case action
+ when :partitioner
+ Y2Partitioner::Clients::Main.new.run(allow_commit: false)
+ when :proposal
+ Y2Storage::Clients::InstDiskProposal.new.run
+ when :autoinst
+ Y2Storage::Clients::AutoinstManualTest.new.run
+ end
+ end
+
+ private
+
+ # @return [String, nil] error to display if the client is not invoked
correctly
+ attr_reader :command_error
+
+ # @return [String, nil] path of the file containing the devicegraph to
use as main mock
+ attr_reader :devicegraph_path
+
+ # @return [String, nil] path to an AutoYaST profile
+ attr_reader :profile_path
+
+ # @return [String, nil] path to a control file to influence the action
behavior
+ attr_reader :control_file_path
+
+ # @return [Symbol, nil] action to test, can be :partitioner, :proposal
or :autoinst
+ attr_reader :action
+
+ # Command line arguments
+ def args
+ Yast::WFM.Args
+ end
+
+ # Mocks the execution environment
+ def mock
+ load_devicegraph if devicegraph_path
+ load_profile if profile_path
+ load_control_file if control_file_path
+ end
+
+ # @see #parse_args
+ def validate_action
+ if action.nil?
+ @command_error = _("No action specified")
+ return false
+ end
+
+ return true if [:partitioner, :proposal, :autoinst].include?(action)
+
+ @command_error = format(_("Unknown action '%s'"), action)
+ false
+ end
+
+ # @see #parse_args
+ def validate_devicegraph_path
+ if devicegraph_path.nil?
+ @command_error = _("No devicegraph file provided")
+ return false
+ end
+
+ return true if devicegraph_path =~ /.(xml|ya?ml)$/
+
+ @command_error = format(
+ _("Wrong devicegraph path %s, expecting foo.yml, foo.yaml or
foo.xml."), devicegraph_path
+ )
+ false
+ end
+
+ # @see #mock
+ def load_devicegraph
+ if devicegraph_path =~ /.ya?ml$/
+ Y2Storage::StorageManager.instance(mode:
:rw).probe_from_yaml(devicegraph_path)
+ else
+ Y2Storage::StorageManager.instance(mode:
:rw).probe_from_xml(devicegraph_path)
+ end
+ end
+
+ # @see #mock
+ def load_profile
+ Yast.import "Profile"
+ Yast::Profile.ReadXML(profile_path)
+ end
+
+ # @see #mock
+ def load_control_file
+ Yast.import "ProductFeatures"
+ features = Yast::XML.XMLToYCPFile(control_file_path)
+ Yast::ProductFeatures.Import(features)
+ end
+
+ # Prints a basic help text to the standard output
+ def display_help
+ warn command_error
+ # TRANSLATORS: help text printed in the standard output in case of
wrong command
+ warn _(
+ "Use one of the following:\n" \
+ " yast2 storage_testing partitioner devicegraph.(xml|yml)\n" \
+ " yast2 storage_testing proposal devicegraph.(xml|yml)
[control_file.xml]\n" \
+ " yast2 storage_testing autoinst devicegraph.(xml|yml) profile.xml"
+ )
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-storage-ng-4.4.28/src/lib/y2storage/device.rb
new/yast2-storage-ng-4.4.30/src/lib/y2storage/device.rb
--- old/yast2-storage-ng-4.4.28/src/lib/y2storage/device.rb 2021-12-20
17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/lib/y2storage/device.rb 2022-01-03
11:33:41.000000000 +0100
@@ -458,7 +458,12 @@
serialized = userdata[key.to_s]
return nil if serialized.nil?
- YAML.load(serialized) # rubocop:disable Security/YAMLLoad # here it is
our data, so safe
+ if RUBY_VERSION.start_with?("2.")
+ YAML.load(serialized) # rubocop:disable Security/YAMLLoad # here it is
our data, so safe
+ else
+ # ruby3 from 3.1 defaults load to safe_load, so need explicit
unsafe_load
+ YAML.unsafe_load(serialized)
+ end
end
# Generic mechanism to update the concrete attribute checked by {#in_etc?}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/src/lib/y2storage/storage_env.rb
new/yast2-storage-ng-4.4.30/src/lib/y2storage/storage_env.rb
--- old/yast2-storage-ng-4.4.28/src/lib/y2storage/storage_env.rb
2021-12-20 17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/src/lib/y2storage/storage_env.rb
2022-01-03 11:33:41.000000000 +0100
@@ -40,6 +40,13 @@
private_constant :ENV_LIBSTORAGE_IGNORE_PROBE_ERRORS
def initialize
+ reset_cache
+ end
+
+ # Reset the cached values of the environment variables,
+ # call this after changing the value of any used environment variable
+ def reset_cache
+ log.debug "Resetting ENV values cache"
@active_cache = {}
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/test/installation/console/plugins/luks2_checkbox_test.rb
new/yast2-storage-ng-4.4.30/test/installation/console/plugins/luks2_checkbox_test.rb
---
old/yast2-storage-ng-4.4.28/test/installation/console/plugins/luks2_checkbox_test.rb
1970-01-01 01:00:00.000000000 +0100
+++
new/yast2-storage-ng-4.4.30/test/installation/console/plugins/luks2_checkbox_test.rb
2022-01-03 11:33:41.000000000 +0100
@@ -0,0 +1,114 @@
+# Copyright (c) [2021] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require_relative "../../../spec_helper"
+
+begin
+ # in development or in GitHub Actions the file might be present,
+ # try loading the original file
+ old_require "installation/console/menu_plugin"
+rescue LoadError
+ # the file is missing, mock the "installation/console/menu_plugin" content,
+ # needed during RPM build
+ module Installation
+ module Console
+ class MenuPlugin
+ end
+ end
+ end
+end
+
+require "installation/console/plugins/luks2_checkbox"
+require "cwm/rspec"
+
+describe Installation::Console::Plugins::LUKS2CheckBox do
+ subject(:widget) { described_class.new }
+
+ include_examples "CWM::CheckBox"
+
+ describe "#init" do
+ before do
+ expect(Y2Storage::StorageEnv.instance).to receive(:luks2_available?)
+ .and_return(luks2_available)
+ end
+
+ context "LUKS2 available" do
+ let(:luks2_available) { true }
+
+ it "sets the initial state to checked" do
+ expect(widget).to receive(:check)
+ widget.init
+ end
+ end
+
+ context "LUKS2 not available" do
+ let(:luks2_available) { false }
+
+ it "sets the initial state to unchecked" do
+ expect(widget).to_not receive(:check)
+ widget.init
+ end
+ end
+ end
+
+ describe "#store" do
+ before do
+ allow(Y2Storage::StorageEnv.instance).to receive(:reset_cache)
+ allow(ENV).to receive(:delete)
+ allow(ENV).to receive(:[]=)
+
+ allow(widget).to receive(:checked?).and_return(checked)
+ end
+
+ context "the checkbox is checked" do
+ let(:checked) { true }
+
+ it "sets the YAST_LUKS2_AVAILABLE env variable to 1" do
+ expect(Y2Storage::StorageEnv.instance).to receive(:reset_cache)
+ expect(ENV).to receive(:[]=).with("YAST_LUKS2_AVAILABLE", "1")
+ widget.store
+ end
+ end
+
+ context "the checkbox is not checked" do
+ let(:checked) { false }
+
+ it "deletes the YAST_LUKS2_AVAILABLE env variable" do
+ expect(Y2Storage::StorageEnv.instance).to receive(:reset_cache)
+ expect(ENV).to receive(:delete).with("YAST_LUKS2_AVAILABLE")
+ widget.store
+ end
+ end
+ end
+end
+
+describe Installation::Console::Plugins::LUKS2CheckBoxPlugin do
+ describe "#order" do
+ it "returns a positive number" do
+ expect(subject.order).to be_a(Numeric)
+ expect(subject.order).to be > 0
+ end
+ end
+
+ describe "#widget" do
+ it "returns a CWM widget" do
+ expect(subject.widget).to be_a(CWM::AbstractWidget)
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-storage-ng-4.4.28/test/spec_helper.rb
new/yast2-storage-ng-4.4.30/test/spec_helper.rb
--- old/yast2-storage-ng-4.4.28/test/spec_helper.rb 2021-12-20
17:32:39.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/test/spec_helper.rb 2022-01-03
11:33:41.000000000 +0100
@@ -29,7 +29,12 @@
# fail fast if a class does not declare textdomain (bsc#1130822)
ENV["Y2STRICTTEXTDOMAIN"] = "1"
-LIBS_TO_SKIP = ["y2packager/repository"]
+LIBS_TO_SKIP = [
+ "installation/console/menu_plugin",
+ "installation/proposal_runner",
+ "installation/proposal_store",
+ "y2packager/repository"
+]
# Hack to avoid to require some files
#
@@ -76,6 +81,13 @@
require_relative "support/storage_helpers"
+module Installation
+ # The Installation::ProposalStore and Installation::ProposalRunner classes
are not loaded in the
+ # tests to avoid cyclic dependencies with yast2-installation at build time.
+ class ProposalStore; end
+ class ProposalRunner; end
+end
+
RSpec.configure do |c|
c.include Yast::RSpec::StorageHelpers
@@ -86,6 +98,16 @@
stub_const("Y2Packager::Repository", double("Y2Packager::Repository"))
allow(Y2Packager::Repository).to receive(:all).and_return([])
+ allow(Yast).to receive(:import).and_call_original
+ # Yast::Profile, AutoinstStorage and AutoinstConfig are not loaded in the
tests to avoid cyclic
+ # dependencies with the yast-installation package at build time.
+ allow(Yast).to receive(:import).with("Profile")
+ allow(Yast).to receive(:import).with("AutoinstStorage")
+ allow(Yast).to receive(:import).with("AutoinstConfig")
+ stub_const("Yast::Profile", double("Yast::Profile"))
+ stub_const("Yast::AutoinstStorage", double("Yast::AutoinstStorage"))
+ stub_const("Yast::AutoinstConfig", double("Yast::AutoinstConfig"))
+
allow(Y2Storage::DumpManager.instance).to receive(:dump)
if respond_to?(:architecture) # Match mocked architecture in Arch module
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-4.4.28/test/y2storage/clients/manual_test_test.rb
new/yast2-storage-ng-4.4.30/test/y2storage/clients/manual_test_test.rb
--- old/yast2-storage-ng-4.4.28/test/y2storage/clients/manual_test_test.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-storage-ng-4.4.30/test/y2storage/clients/manual_test_test.rb
2022-01-03 11:33:41.000000000 +0100
@@ -0,0 +1,222 @@
+#!/usr/bin/env rspec
+# Copyright (c) [2021] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require_relative "../spec_helper"
+require "y2storage/clients/manual_test"
+
+describe Y2Storage::Clients::ManualTest do
+ describe ".run" do
+ before do
+ allow(Yast::WFM).to receive(:Args).and_return(args)
+ allow(Y2Partitioner::Clients::Main).to receive(:new).and_return
partitioner_client
+ allow(Y2Storage::Clients::InstDiskProposal).to receive(:new).and_return
proposal_client
+ allow(Y2Storage::StorageManager).to receive(:create_test_instance)
+ allow(Y2Storage::StorageManager).to receive(:instance).and_return
storage_manager
+ end
+
+ let(:storage_manager) { double("StorageManager", probe_from_yaml: nil,
probe_from_xml: nil) }
+ let(:partitioner_client) { double("Main", run: :next) }
+ let(:proposal_client) { double("InstDiskProposal", run: :next) }
+
+ RSpec.shared_examples "abort" do
+ it "shows the help text" do
+ expect { described_class.run }.to output(/yast2
storage_testing/).to_stderr
+ end
+
+ it "returns :abort" do
+ allow(Warning).to receive(:warn)
+ expect(described_class.run).to eq :abort
+ end
+ end
+
+ RSpec.shared_examples "mock devicegraph" do
+ it "mocks the devicegraph with the given file" do
+ expect(storage_manager).to receive(:probe_from_xml).with(args[1])
+ described_class.run
+ end
+ end
+
+ context "if no arguments are provided" do
+ let(:args) { [] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/No action/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "if a wrong action is specified" do
+ let(:args) { ["whatever"] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/Unknown action/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "partitioner action without a devicegraph" do
+ let(:args) { ["partitioner"] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/No devicegraph/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "partitioner action with a devicegraph file not ending in
xml/yml/yaml" do
+ let(:args) { ["partitioner", "devicegraph.txt"] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/Wrong devicegraph
path/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "partitioner action with a devicegraph file ending in .xml" do
+ let(:args) { ["partitioner", "devicegraph.xml"] }
+
+ it "mocks the devicegraph with the xml file" do
+ expect(storage_manager).to
receive(:probe_from_xml).with("devicegraph.xml")
+ described_class.run
+ end
+
+ it "opens the partitioner" do
+ expect(partitioner_client).to receive(:run)
+ described_class.run
+ end
+ end
+
+ context "partitioner action with a devicegraph file ending in .yaml" do
+ let(:args) { ["partitioner", "/path/to/devicegraph.yaml"] }
+
+ it "mocks the devicegraph with the YAML file" do
+ expect(storage_manager).to
receive(:probe_from_yaml).with("/path/to/devicegraph.yaml")
+ described_class.run
+ end
+
+ it "opens the partitioner" do
+ expect(partitioner_client).to receive(:run)
+ described_class.run
+ end
+ end
+
+ context "proposal action without a devicegraph" do
+ let(:args) { ["partitioner"] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/No devicegraph/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "proposal action with a devicegraph file and no control file" do
+ let(:args) { ["proposal", "devicegraph.xml"] }
+
+ include_examples "mock devicegraph"
+
+ it "uses the product features from the current system" do
+ expect(Yast::ProductFeatures).to_not receive(:Import)
+ described_class.run
+ end
+
+ it "opens the proposal client" do
+ expect(proposal_client).to receive(:run)
+ described_class.run
+ end
+ end
+
+ context "proposal action with a devicegraph file and a control file" do
+ let(:args) { ["proposal", "/path/to/devicegraph.xml", "control.xml"] }
+
+ before do
+ allow(Yast::XML).to receive(:XMLToYCPFile).and_return(some: "value")
+ end
+
+ include_examples "mock devicegraph"
+
+ it "mocks the product features" do
+ expect(Yast::ProductFeatures).to receive(:Import).with(some: "value")
+ described_class.run
+ end
+
+ it "opens the proposal client" do
+ expect(proposal_client).to receive(:run)
+ described_class.run
+ end
+ end
+
+ context "autoinst action without a devicegraph" do
+ let(:args) { ["autoinst"] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/No devicegraph/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "autoinst action with a devicegraph file and no profile" do
+ let(:args) { ["autoinst", "/path/to/devicegraph.xml"] }
+
+ it "reports the corresponding error" do
+ expect { described_class.run }.to output(/No AutoYaST
profile/).to_stderr
+ end
+
+ include_examples "abort"
+ end
+
+ context "autoinst action with a devicegraph file and a profile" do
+ let(:args) { ["autoinst", "/path/to/devicegraph.xml",
"/the/profile.xml"] }
+
+ before do
+ allow(Yast::Profile).to receive(:ReadXML)
+ allow(Yast::Profile).to receive(:current).and_return({})
+ allow(Yast::AutoinstConfig).to receive(:Confirm=)
+ allow(Yast::AutoinstStorage).to receive(:Import)
+ allow(Installation::ProposalRunner).to receive(:new).and_return runner
+
+ Yast.import "Wizard"
+ allow(Yast::Wizard).to receive(:OpenNextBackDialog)
+ allow(Yast::Wizard).to receive(:CloseDialog)
+ end
+
+ let(:runner) { double("ProposalRunner", run: :next) }
+
+ include_examples "mock devicegraph"
+
+ it "loads and imports the profile" do
+ expect(Yast::Profile).to receive(:ReadXML).with("/the/profile.xml")
+ expect(Yast::AutoinstStorage).to receive(:Import)
+ described_class.run
+ end
+
+ it "displays the proposal dialog" do
+ expect(Yast::AutoinstConfig).to receive(:Confirm=).with(true)
+ expect(runner).to receive(:run)
+ described_class.run
+ end
+ end
+ end
+end