Hello community,

here is the log from the commit of package autoyast2 for openSUSE:Factory 
checked in at 2016-08-18 10:20:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/autoyast2 (Old)
 and      /work/SRC/openSUSE:Factory/.autoyast2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "autoyast2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/autoyast2/autoyast2.changes      2016-07-16 
22:12:59.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.autoyast2.new/autoyast2.changes 2016-08-18 
10:20:41.000000000 +0200
@@ -1,0 +2,53 @@
+Wed Aug 17 09:56:28 CEST 2016 - sch...@suse.de
+
+- Improved logging for broken script descriptions.
+  Still a part of bnc#986049.
+- 3.1.147
+
+-------------------------------------------------------------------
+Mon Aug 12 10:48:18 CEST 2016 - sch...@suse.de
+
+- Cloning devices: Devices which are not needed for the
+  installation will be ignored explicitly in the "skip_list".
+  (bnc#989392)
+- 3.1.146
+
+-------------------------------------------------------------------
+Thu Aug 11 15:45:01 CEST 2016 - sch...@suse.de
+
+- Added "confirm_base_product_license" to rnc file.
+  (bnc#992535)
+- 3.1.145
+
+-------------------------------------------------------------------
+Fri Aug  5 15:37:30 CEST 2016 - loci...@suse.com
+
+- Reintroduced autoyast=usb as a valid URL to AutoYaST profile
+  (bsc#987858)
+- 3.1.144
+
+-------------------------------------------------------------------
+Tue Aug  2 12:28:29 CEST 2016 - sch...@suse.de
+
+- Added missed flag "install_recommended" in software section.
+  (bnc#990494)
+- 3.1.143
+
+-------------------------------------------------------------------
+Fri Jul 29 16:12:42 CEST 2016 - loci...@suse.com
+
+- Added new [Stop] button for <ask> dialogs with timeout. The
+  button shows the current time in seconds till the automatic
+  timeout (bsc#990114).
+- More possible user actions can now stop the execution to prevent
+  from timeout (bsc#990114).
+- 3.1.142
+
+-------------------------------------------------------------------
+Mon Jul 25 12:50:20 CEST 2016 - sch...@suse.de
+
+- Check if AutoYaST "script" elements are hashes.
+  Other entries will be ignored. (bnc#986049)
+- 3.1.141
+
+-------------------------------------------------------------------

Old:
----
  autoyast2-3.1.140.tar.bz2

New:
----
  autoyast2-3.1.147.tar.bz2

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

Other differences:
------------------
++++++ autoyast2.spec ++++++
--- /var/tmp/diff_new_pack.bNR1Dt/_old  2016-08-18 10:20:42.000000000 +0200
+++ /var/tmp/diff_new_pack.bNR1Dt/_new  2016-08-18 10:20:42.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           autoyast2
-Version:        3.1.140
+Version:        3.1.147
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -35,6 +35,7 @@
 BuildRequires:  yast2
 BuildRequires:  yast2-packager
 BuildRequires:  yast2-services-manager
+BuildRequires:  yast2-slp
 BuildRequires:  yast2-storage >= 3.1.59
 BuildRequires:  yast2-transfer
 BuildRequires:  yast2-update >= 3.1.36

++++++ autoyast2-3.1.140.tar.bz2 -> autoyast2-3.1.147.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/.travis.yml 
new/autoyast2-3.1.147/.travis.yml
--- old/autoyast2-3.1.140/.travis.yml   2016-07-15 14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/.travis.yml   2016-08-17 10:56:40.000000000 +0200
@@ -5,7 +5,7 @@
     # disable rvm, use system Ruby
     - rvm reset
     - wget 
https://raw.githubusercontent.com/yast/yast-devtools/master/travis-tools/travis_setup.sh
-    - sh ./travis_setup.sh -p "rake yast2-devtools yast2-testsuite yast2 
yast2-storage yast2-xml yast2-transfer yast2-services-manager 
yast2-installation yast2-installation-control yast2-packager trang" -g 
"rspec:3.3.0 yast-rake gettext"
+    - sh ./travis_setup.sh -p "rake yast2-devtools yast2-testsuite yast2 
yast2-storage yast2-xml yast2-transfer yast2-services-manager 
yast2-installation yast2-installation-control yast2-packager yast2-slp trang" 
-g "rspec:3.3.0 yast-rake gettext"
 script:
     - rake check:syntax
     - rake check:pot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/POTFILES 
new/autoyast2-3.1.147/POTFILES
--- old/autoyast2-3.1.140/POTFILES      2016-07-15 14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/POTFILES      1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-src/config/autoinst_modules.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/package/autoyast2.changes 
new/autoyast2-3.1.147/package/autoyast2.changes
--- old/autoyast2-3.1.140/package/autoyast2.changes     2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/package/autoyast2.changes     2016-08-17 
10:56:40.000000000 +0200
@@ -1,4 +1,57 @@
 -------------------------------------------------------------------
+Wed Aug 17 09:56:28 CEST 2016 - sch...@suse.de
+
+- Improved logging for broken script descriptions.
+  Still a part of bnc#986049.
+- 3.1.147
+
+-------------------------------------------------------------------
+Mon Aug 12 10:48:18 CEST 2016 - sch...@suse.de
+
+- Cloning devices: Devices which are not needed for the
+  installation will be ignored explicitly in the "skip_list".
+  (bnc#989392)
+- 3.1.146
+
+-------------------------------------------------------------------
+Thu Aug 11 15:45:01 CEST 2016 - sch...@suse.de
+
+- Added "confirm_base_product_license" to rnc file.
+  (bnc#992535)
+- 3.1.145
+
+-------------------------------------------------------------------
+Fri Aug  5 15:37:30 CEST 2016 - loci...@suse.com
+
+- Reintroduced autoyast=usb as a valid URL to AutoYaST profile
+  (bsc#987858)
+- 3.1.144
+
+-------------------------------------------------------------------
+Tue Aug  2 12:28:29 CEST 2016 - sch...@suse.de
+
+- Added missed flag "install_recommended" in software section.
+  (bnc#990494)
+- 3.1.143
+
+-------------------------------------------------------------------
+Fri Jul 29 16:12:42 CEST 2016 - loci...@suse.com
+
+- Added new [Stop] button for <ask> dialogs with timeout. The
+  button shows the current time in seconds till the automatic
+  timeout (bsc#990114).
+- More possible user actions can now stop the execution to prevent
+  from timeout (bsc#990114).
+- 3.1.142
+
+-------------------------------------------------------------------
+Mon Jul 25 12:50:20 CEST 2016 - sch...@suse.de
+
+- Check if AutoYaST "script" elements are hashes.
+  Other entries will be ignored. (bnc#986049)
+- 3.1.141
+
+-------------------------------------------------------------------
 Tue Jul  14 15:01:29 CEST 2016 - sch...@suse.de
 
 - Exporting NFS root partition correctly. (bnc#986124)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/package/autoyast2.spec 
new/autoyast2-3.1.147/package/autoyast2.spec
--- old/autoyast2-3.1.140/package/autoyast2.spec        2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/package/autoyast2.spec        2016-08-17 
10:56:40.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           autoyast2
-Version:        3.1.140
+Version:        3.1.147
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -40,6 +40,7 @@
 BuildRequires:  yast2-services-manager
 BuildRequires:  yast2-packager
 BuildRequires:  yast2-update >= 3.1.36
+BuildRequires:  yast2-slp
 
 # %%{_unitdir} macro definition is in a separate package since 13.1
 %if 0%{?suse_version} >= 1310
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/src/autoyast-rnc/general.rnc 
new/autoyast2-3.1.147/src/autoyast-rnc/general.rnc
--- old/autoyast2-3.1.140/src/autoyast-rnc/general.rnc  2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/src/autoyast-rnc/general.rnc  2016-08-17 
10:56:40.000000000 +0200
@@ -10,6 +10,7 @@
       element final_halt    { BOOLEAN }? &
       element final_reboot  { BOOLEAN }? &
       element forceboot     { BOOLEAN }? &
+      element confirm_base_product_license { BOOLEAN }? &
       element ntp_sync_time_before_installation { text }? &
       element max_systemd_wait { INTEGER }?
     }? &
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/src/include/autoinstall/ask.rb 
new/autoyast2-3.1.147/src/include/autoinstall/ask.rb
--- old/autoyast2-3.1.140/src/include/autoinstall/ask.rb        2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/src/include/autoinstall/ask.rb        2016-08-17 
10:56:40.000000000 +0200
@@ -9,7 +9,11 @@
 # $Id$
 module Yast
   module AutoinstallAskInclude
+    include Yast::Logger
+
     def initialize_autoinstall_ask(include_target)
+      textdomain "autoinst"
+
       Yast.import "Profile"
       Yast.import "UI"
       Yast.import "Label"
@@ -37,6 +41,44 @@
       deep_copy(ret)
     end
 
+    # Function handles any user input in askDialog or timeouts if user did not
+    # give any input during the countdown
+    #
+    # @param [Integer] timeout in seconds
+    # @return [Symbol] any user input or :timeout in case of timeout
+    def user_input_with_countdown(timeout)
+      ret = nil
+
+      if timeout == 0
+        log.info "Waiting for user to enter their data"
+        ret = UI.UserInput
+      else
+        log.info "Waiting #{timeout} sec for the user to enter their data"
+        sec_till_timeout = timeout
+
+        while (sec_till_timeout > 0)
+          UI.ReplaceWidget(:stop_button, PushButton(Id(:stop_timeout), 
"#{Label.StopButton} (#{sec_till_timeout})"))
+          sec_till_timeout -= 1
+          ret = UI.TimeoutUserInput(1000)
+
+          # User has done something in UI - stop the timeout
+          if ret != :timeout
+            log.info "Countdown stopped by user"
+
+            if ret == :stop_timeout
+              UI.ChangeWidget(Id(:stop_timeout), :Enabled, false)
+              UI.SetFocus(:ok)
+            end
+
+            # leave the timeout-loop now
+            break
+          end
+        end
+      end
+
+      ret
+    end
+
     def askDialog
       mod = false
 
@@ -219,7 +261,7 @@
                 )
               )
             end
-            widget = ComboBox(Id(entry_id), Opt(:notify), question, dummy)
+            widget = ComboBox(Id(entry_id), Opt(:notify, :immediate), 
question, dummy)
             dlg = createWidget(widget, frametitle)
           elsif type == "static_text"
             widget = Label(Id(entry_id), Ops.get_string(ask, "default", ""))
@@ -228,13 +270,13 @@
             if Ops.get_boolean(ask, "password", false) == true
               widget1 = Password(
                 Id(entry_id),
-                Opt(:notify),
+                Opt(:notify, :notifyContextMenu),
                 question,
                 Ops.get_string(ask, "default", "")
               )
               widget2 = Password(
                 Id("#{entry_id}_pass2"),
-                Opt(:notify),
+                Opt(:notify, :notifyContextMenu),
                 "",
                 Ops.get_string(ask, "default", "")
               )
@@ -259,9 +301,9 @@
                 widget = ComboBox(Id(entry_id), Opt(:notify), question, dummy)
                 dlg = createWidget(widget, frametitle)
               else
-                widget = TextEntry(
+                widget = InputField(
                   Id(entry_id),
-                  Opt(:notify),
+                  Opt(:hstretch, :notify, :notifyContextMenu),
                   question,
                   Ops.get_string(ask, "default", "")
                 )
@@ -325,7 +367,12 @@
               dialog_term,
               VSpacing(1),
               VStretch(),
-              HBox(HStretch(), backButton, PushButton(Id(:ok), ok_label))
+              HBox(
+                HStretch(),
+                backButton,
+                ReplacePoint(Id(:stop_button), Empty()),
+                PushButton(Id(:ok), ok_label)
+              )
             )
           ),
           HSpacing(1)
@@ -342,12 +389,11 @@
         #
         while true
           ret = nil
-          if timeout == 0
-            ret = UI.UserInput
-          else
-            ret = UI.TimeoutUserInput(Ops.multiply(timeout, 1000))
-          end
-          timeout = 0
+
+          ret = user_input_with_countdown(timeout)
+          # Any user action stops the timeout
+          timeout = 0 if ret != :timeout
+
           if ret == :ok || ret == :timeout # Process users' input and save 
asks into dialogs hash.
             runAgain = 0
             element_cnt2 = 0
@@ -562,9 +608,13 @@
               Ops.subtract(Builtins.size(history), 1)
             )
             break
+          else
+            log.info "User ret ignored: #{ret}"
           end
         end
+
         UI.CloseDialog
+
         if jumpToDialog != -2 # If we must jump to another dialog (as read on 
/tmp/next_dialog)
           dialog_nr = jumpToDialog
           jumpToDialog = -2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/src/modules/AutoinstConfig.rb 
new/autoyast2-3.1.147/src/modules/AutoinstConfig.rb
--- old/autoyast2-3.1.140/src/modules/AutoinstConfig.rb 2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/src/modules/AutoinstConfig.rb 2016-08-17 
10:56:40.000000000 +0200
@@ -17,6 +17,10 @@
       include ServicesManagerTargetClass::BaseTargets
     end
 
+    DEFAULT_PROFILE_NAME = "autoinst.xml".freeze
+
+    include Yast::Logger
+
     def main
       Yast.import "UI"
       textdomain "autoinst"
@@ -28,6 +32,7 @@
       Yast.import "SLP"
       Yast.import "Stage"
       Yast.import "Label"
+      Yast.import "Report"
 
       Yast.include self, "autoinstall/xml.rb"
 
@@ -214,114 +219,158 @@
       nil
     end
 
-
-    # Return location of profile from command line.
-    # @return [Hash] with protocol, server, path
-    # @example autoyast=http://www.server.com/profiles/
-    def ParseCmdLine(autoinstall)
-      Yast.import "URL"
-
-      result = {}
-      cmdLine = ""
-
-      if Ops.greater_than(Builtins.size(autoinstall), 0)
-        cmdLine = autoinstall
-        if cmdLine == "default"
-          Ops.set(result, "scheme", "file")
-          Ops.set(result, "path", "/autoinst.xml")
-        else
-          if cmdLine == "slp"
-            slpData = SLP.FindSrvs("autoyast", "")
-            if Ops.greater_than(Builtins.size(slpData), 1)
-              dummy = []
-              comment2url = {}
-              Builtins.foreach(slpData) do |m|
-                attrList = SLP.FindAttrs(Ops.get_string(m, "srvurl", ""))
-                if Ops.greater_than(Builtins.size(attrList), 0)
-                  url = Builtins.substring(Ops.get_string(m, "srvurl", ""), 17)
-                  # FIXME: that's really lazy coding here but I allow only one 
attribute currently anyway
-                  #        so it's lazy but okay. No reason to be too strict 
here with the checks
-                  #        As soon as more than one attr is possible, I need 
to iterate over the attr list
-                  #
-                  comment = Ops.get(attrList, 0, "")
-                  # The line above needs to be fixed when we have more 
attributes
-
-                  # comment will look like this: "(description=BLA BLA)"
-                  startComment = Builtins.findfirstof(comment, "=")
-                  endComment = Builtins.findlastof(comment, ")")
-                  if startComment != nil && endComment != nil &&
-                      Ops.greater_than(
-                        Ops.subtract(Ops.subtract(endComment, startComment), 
1),
-                        0
-                      )
-                    comment = Builtins.substring(
-                      comment,
-                      Ops.add(startComment, 1),
-                      Ops.subtract(Ops.subtract(endComment, startComment), 1)
-                    )
-                  else
-                    comment = ""
-                  end
-                  if Ops.less_than(Builtins.size(comment), 1)
-                    comment = Builtins.sformat(
-                      "bad description in SLP for %1",
-                      url
-                    )
-                  end
-                  dummy = Builtins.add(dummy, Item(comment, false))
-                  Ops.set(comment2url, comment, url)
-                else
-                  url = Builtins.substring(Ops.get_string(m, "srvurl", ""), 17)
-                  dummy = Builtins.add(dummy, Item(url, false))
-                  Ops.set(comment2url, url, url)
-                end
-              end
-              dlg = Left(ComboBox(Id(:choose), _("Choose Profile"), dummy))
-              UI.OpenDialog(VBox(dlg, PushButton(Id(:ok), Label.OKButton)))
-              UI.UserInput
-              cmdLine = Ops.get(
-                comment2url,
-                Convert.to_string(UI.QueryWidget(Id(:choose), :Value)),
-                ""
+    # Searches for 'autoyast' via SLP and returns the full URL of
+    # the profile. If more providers are found, user is asked to
+    # select one.
+    #
+    # FIXME: This function has been intentionally left (almost) intact
+    # and needs refactoring
+    #
+    # @return [String] profile location or 'nil' if nothing is found
+    def find_slp_autoyast
+      profile_location = nil
+
+      slpData = SLP.FindSrvs("autoyast", "")
+
+      # SLP data returned by SLP server contain the service ID, colon
+      # and then the URL of that service
+      url_starts_at = "service.autoyast:".size
+
+      # More providers to choose from
+      if Ops.greater_than(Builtins.size(slpData), 1)
+        dummy = []
+        comment2url = {}
+        Builtins.foreach(slpData) do |m|
+          attrList = SLP.FindAttrs(Ops.get_string(m, "srvurl", ""))
+
+          if Ops.greater_than(Builtins.size(attrList), 0)
+            url = Builtins.substring(Ops.get_string(m, "srvurl", ""), 
url_starts_at)
+            # FIXME: that's really lazy coding here but I allow only one 
attribute currently anyway
+            #        so it's lazy but okay. No reason to be too strict here 
with the checks
+            #        As soon as more than one attr is possible, I need to 
iterate over the attr list
+            #
+            comment = Ops.get(attrList, 0, "")
+            # The line above needs to be fixed when we have more attributes
+
+            # comment will look like this: "(description=BLA BLA)"
+            startComment = Builtins.findfirstof(comment, "=")
+            endComment = Builtins.findlastof(comment, ")")
+
+            if startComment != nil && endComment != nil &&
+              Ops.greater_than(
+                Ops.subtract(Ops.subtract(endComment, startComment), 1),
+                0
               )
-              UI.CloseDialog
-            elsif Builtins.size(slpData) == 1
-              cmdLine = Builtins.substring(
-                Ops.get_string(slpData, [0, "srvurl"], ""),
-                17
+              comment = Builtins.substring(
+                comment,
+                Ops.add(startComment, 1),
+                Ops.subtract(Ops.subtract(endComment, startComment), 1)
               )
             else
-              cmdLine = "slp query for 'autoyast' failed"
+              comment = ""
             end
+
+            if Ops.less_than(Builtins.size(comment), 1)
+              comment = Builtins.sformat(
+                "bad description in SLP for %1",
+                url
+              )
+            end
+
+            dummy = Builtins.add(dummy, Item(comment, false))
+            Ops.set(comment2url, comment, url)
+          else
+            url = Builtins.substring(Ops.get_string(m, "srvurl", ""), 
url_starts_at)
+            dummy = Builtins.add(dummy, Item(url, false))
+            Ops.set(comment2url, url, url)
           end
-          result = URL.Parse(cmdLine)
-          @OriginalURI = cmdLine
         end
+
+        dlg = Left(ComboBox(Id(:choose), _("Choose Profile"), dummy))
+
+        UI.OpenDialog(VBox(dlg, PushButton(Id(:ok), Label.OKButton)))
+        UI.UserInput
+
+        profile_location = Ops.get(
+          comment2url,
+          Convert.to_string(UI.QueryWidget(Id(:choose), :Value)),
+          ""
+        )
+
+        UI.CloseDialog
+
+      # just one provider
+      elsif Builtins.size(slpData) == 1
+        profile_location = Builtins.substring(
+          Ops.get_string(slpData, [0, "srvurl"], ""),
+          17
+        )
+
+      # Nothing returned by SLP query
+      else
+        log.error "slp query for 'autoyast' failed"
+        Report.Error(_("No 'autoyast' provider has been found via SLP."))
       end
 
+      profile_location
+    end
 
-      if Ops.get_string(result, "scheme", "") == ""
+    # Updates or extends the profile location according to defaults
+    # @param [String] AutoYast profile location as defined on commandline
+    # @return [String] updated profile location
+    def update_profile_location(profile_location)
+      if profile_location.nil? || profile_location == ""
+        # FIXME: reevaluate this statement
+        #
         # Autoinstall mode was not activated from command line.
         # There must be a floppy with an 'autoinst.xml' in order
         # to be able to reach this point, so we set floppy with
         # autoinst.xml as the control file.
-
-        result = Builtins.add(result, "scheme", "floppy")
-        result = Builtins.add(result, "path", "/autoinst.xml")
+        profile_location = "floppy:///#{DEFAULT_PROFILE_NAME}"
+      elsif profile_location == "default"
+        profile_location = "file:///#{DEFAULT_PROFILE_NAME}"
+      # bsc#987858: autoyast=usb checks for the default profile
+      elsif profile_location == "usb"
+        profile_location = "usb:///#{DEFAULT_PROFILE_NAME}"
+      elsif profile_location == "slp"
+        profile_location = find_slp_autoyast
+      else
+        profile_location
       end
-      @urltok = deep_copy(result)
+    end
+
+    # Processes location of the profile given as a parameter.
+    # @param [String] AutoYast profile location as defined on commandline
+    # @example autoyast=http://www.server.com/profiles/
+    # Fills internal variables
+    def ParseCmdLine(profile_location)
 
-      @scheme = Ops.get_string(@urltok, "scheme", "default")
-      @host = Ops.get_string(@urltok, "host", "")
-      @filepath = Ops.get_string(@urltok, "path", "")
-      @port = Ops.get_string(@urltok, "port", "")
-      @user = Ops.get_string(@urltok, "user", "")
-      @pass = Ops.get_string(@urltok, "pass", "")
+      log.info "AutoYast profile location #{profile_location}"
 
-      if @scheme == "default" || @scheme == "file" || @scheme == "floppy"
-        @remoteProfile = false
+      profile_location = update_profile_location(profile_location)
+      # There is no profile defined/found anywhere
+      return false if profile_location.nil?
+
+      parsed_url = URL.Parse(profile_location)
+
+      if parsed_url["scheme"].nil? || parsed_url["scheme"] == ""
+        Report.Error(_("Invalid AutoYaST profile URL\n%{url}") % {:url => 
profile_location})
+        return false
       end
-      Builtins.y2milestone("urltok = %1", @urltok)
+
+      @OriginalURI = profile_location
+      @urltok = deep_copy(parsed_url)
+
+      @scheme   = parsed_url["scheme"] || "default"
+      @host     = parsed_url["host"]   || ""
+      @filepath = parsed_url["path"]   || ""
+      @port     = parsed_url["port"]   || ""
+      @user     = parsed_url["user"]   || ""
+      @pass     = parsed_url["pass"]   || ""
+
+      @remoteProfile = !["default", "file", "floppy", "usb", 
"device"].include?(@scheme)
+
+      log.info "urltok = #{URL.HidePassword(profile_location)}"
       true
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/src/modules/AutoinstPartPlan.rb 
new/autoyast2-3.1.147/src/modules/AutoinstPartPlan.rb
--- old/autoyast2-3.1.140/src/modules/AutoinstPartPlan.rb       2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/src/modules/AutoinstPartPlan.rb       2016-08-17 
10:56:40.000000000 +0200
@@ -46,6 +46,13 @@
 
       # default value of settings modified
       @modified = false
+
+      # Devices which do not have any mount point, lvm_group or raid_name
+      # These devices will not be taken in the AutoYaSt configuration file
+      # but will be added to the skip_list in order not regarding it while
+      # next installation. (bnc#989392)
+      @skipped_devices = []
+
     end
 
     # Function sets internal variable, which indicates, that any
@@ -660,6 +667,9 @@
         end
         deep_copy(drive)
       end
+
+      @skipped_devices = []
+
       drives = Builtins.filter(
         Convert.convert(drives, :from => "list", :to => "list <map>")
       ) do |v|
@@ -672,8 +682,10 @@
             raise Break
           end
         end
+        @skipped_devices << v["device"] unless keep
         keep
       end
+      Builtins.y2milestone("Skipped devices: #{@skipped_devices}")
 
       Mode.SetMode("autoinst_config")
       deep_copy(drives)
@@ -800,6 +812,19 @@
         deep_copy(d)
       end
 
+      # Adding skipped devices to partitioning section.
+      # These devices will not be taken in the AutoYaSt configuration file
+      # but will be added to the skip_list in order not regarding it while
+      # next installation. (bnc#989392)
+      unless @skipped_devices.empty?
+        skip_device = {}
+        skip_device["initialize"] = true
+        skip_device["skip_list"] = @skipped_devices.collect do |dev|
+          {"skip_key" => "device", "skip_value" => dev}
+        end
+        clean_drives << skip_device
+      end
+
       deep_copy(clean_drives)
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/src/modules/AutoinstScripts.rb 
new/autoyast2-3.1.147/src/modules/AutoinstScripts.rb
--- old/autoyast2-3.1.140/src/modules/AutoinstScripts.rb        2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/src/modules/AutoinstScripts.rb        2016-08-17 
10:56:40.000000000 +0200
@@ -10,6 +10,9 @@
 
 module Yast
   class AutoinstScriptsClass < Module
+
+    include Yast::Logger
+
     def main
       Yast.import "UI"
       textdomain "autoinst"
@@ -62,6 +65,17 @@
       @modified
     end
 
+    # Checking if the script has the right format
+    # @param [Hash] scripts section of the AutoYast configuration
+    # @param [String] kind of script (pre, post,..)
+    # @return [Array<String>] of scripts
+    def valid_scripts_for(tree, key)
+      tree.fetch(key, []).select do |h|
+        next true if h.is_a?(Hash)
+        log.warn "Cannot evaluate #{key}: #{h.inspect}"
+        false
+      end
+    end
 
     # merge all types of scripts into one single list
     # @param -
@@ -304,11 +318,12 @@
     def Import(s)
       s = deep_copy(s)
       Builtins.y2debug("Calling AutoinstScripts::Import()")
-      @pre = Ops.get_list(s, "pre-scripts", [])
-      @init = Ops.get_list(s, "init-scripts", [])
-      @post = Ops.get_list(s, "post-scripts", [])
-      @chroot = Ops.get_list(s, "chroot-scripts", [])
-      @postpart = Ops.get_list(s, "postpartitioning-scripts", [])
+      # take only hash entries (bnc#986049)
+      @pre = valid_scripts_for(s, "pre-scripts")
+      @init = valid_scripts_for(s, "init-scripts")
+      @post = valid_scripts_for(s, "post-scripts")
+      @chroot = valid_scripts_for(s, "chroot-scripts")
+      @postpart = valid_scripts_for(s, "postpartitioning-scripts")
 
       @pre = Resolve_location(@pre)
       @init = Resolve_location(@init)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/src/modules/AutoinstSoftware.rb 
new/autoyast2-3.1.147/src/modules/AutoinstSoftware.rb
--- old/autoyast2-3.1.140/src/modules/AutoinstSoftware.rb       2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/src/modules/AutoinstSoftware.rb       2016-08-17 
10:56:40.000000000 +0200
@@ -702,6 +702,12 @@
 
       Ops.set(s, "image", @image)
 
+      # In the installed system the flag solver.onlyRequires in zypp.conf is
+      # set to true. This differs from the installation process. So we have
+      # to set "install_recommended" to true in order to reflect the
+      # installation process and cannot use the package bindings. (bnc#990494)
+      Ops.set(s, "install_recommended", true)
+
       deep_copy(s)
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/test/AutoinstConfig_tests.rb 
new/autoyast2-3.1.147/test/AutoinstConfig_tests.rb
--- old/autoyast2-3.1.140/test/AutoinstConfig_tests.rb  1970-01-01 
01:00:00.000000000 +0100
+++ new/autoyast2-3.1.147/test/AutoinstConfig_tests.rb  2016-08-17 
10:56:40.000000000 +0200
@@ -0,0 +1,113 @@
+#!/usr/bin/env rspec
+
+require_relative "test_helper"
+
+Yast.import "AutoinstConfig"
+
+describe Yast::AutoinstConfig do
+  subject { Yast::AutoinstConfig }
+
+  describe "#find_slp_autoyast" do
+    before do
+      allow(Yast::SLP).to receive(:FindSrvs).with("autoyast", 
"").and_return(slp_server_reply)
+    end
+
+    context "when no 'autoyast' provider returned by SLP" do
+      let(:slp_server_reply) { [] }
+
+      it "returns nil" do
+        expect(subject.find_slp_autoyast).to eq(nil)
+      end
+    end
+
+    context "when only one 'autoyast' provider returned by SLP" do
+      let(:service_url) { "https://192.168.0.1/autoinst.xml"; }
+      let(:slp_server_reply) { [{ "srvurl" => 
"service:autoyast:#{service_url}" }] }
+
+      it "returns the service URL" do
+        expect(subject.find_slp_autoyast).to eq(service_url)
+      end
+    end
+
+    context "when two or more 'autoyast' services are returned by SLP" do
+      before do
+        allow(Yast::UI).to receive(:OpenDialog).and_return(true)
+        allow(Yast::UI).to receive(:UserInput).and_return(:ok)
+        allow(Yast::UI).to receive(:CloseDialog).and_return(true)
+        expect(Yast::UI).to receive(:QueryWidget).and_return(service_url_2)
+      end
+
+      let(:service_url_1) { "https://192.168.0.1/autoinst.xml"; }
+      let(:service_url_2) { "https://192.168.0.2/autoinst.xml"; }
+
+      let(:slp_server_reply) {
+        [
+          {"srvurl" => "service:autoyast:#{service_url_1}" },
+          {"srvurl" => "service:autoyast:#{service_url_2}" }
+        ]
+      }
+
+      context "when no additional SLP attributes are found" do
+        it "asks user to choose one URL and returns the selected one" do
+          allow(Yast::SLP).to receive(:FindAttrs).and_return([])
+
+          expect(subject.find_slp_autoyast).to eq(service_url_2)
+        end
+      end
+    end
+  end
+
+  describe "#update_profile_location" do
+    context "when profile location is not defined" do
+      it "returns 'floppy' with path to a profile as the new location" do
+        expect(subject.update_profile_location("")).to match(/floppy:\/+.*xml/)
+      end
+    end
+
+    context "when profile location is 'default'" do
+      it "returns 'file' with path to a profile as the new location" do
+        expect(subject.update_profile_location("default")).to 
match(/file:\/+.*xml/)
+      end
+    end
+
+    context "when profile location is 'usb'" do
+      it "returns 'usb' with path to a profile as the new location" do
+        expect(subject.update_profile_location("usb")).to match(/usb:\/+.*xml/)
+      end
+    end
+
+    context "when profile location is 'slp'" do
+      let(:url_from_slp) { "https://user@pass:server/path/to/profile.xml"; }
+
+      it "returns the URL found using SLP search" do
+        allow(subject).to receive(:find_slp_autoyast).and_return(url_from_slp)
+        expect(subject.update_profile_location("slp")).to eq(url_from_slp)
+      end
+    end
+  end
+
+  describe "#ParseCmdLine" do
+    context "when the profile url is invalid" do
+      let(:autoyast_profile_url) { "//file:8080/path/auto-installation.xml" }
+      it "reports an error and returns false" do
+        expect(Yast::Report).to 
receive(:Error).with(/Invalid.*/).and_call_original
+        expect(subject.ParseCmdLine(autoyast_profile_url)).to eq(false)
+      end
+    end
+
+    context "when the autoyast profile url is valid" do
+      let(:autoyast_profile_url) { 
"https://moo:woo@192.168.0.1:8080/path/auto-installation.xml"; }
+
+      it "parses the given profile location and fill internal structures and 
returns boolean whether it succeded" do
+        expect(subject.ParseCmdLine(autoyast_profile_url)).to eq(true)
+
+        expect(subject.scheme).to eq("https")
+        expect(subject.host).to eq("192.168.0.1")
+        expect(subject.filepath).to eq("/path/auto-installation.xml")
+        expect(subject.port).to eq("8080")
+        expect(subject.user).to eq("moo")
+        expect(subject.pass).to eq("woo")
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/test/AutoinstPartPlan_test.rb 
new/autoyast2-3.1.147/test/AutoinstPartPlan_test.rb
--- old/autoyast2-3.1.140/test/AutoinstPartPlan_test.rb 2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/test/AutoinstPartPlan_test.rb 2016-08-17 
10:56:40.000000000 +0200
@@ -9,6 +9,7 @@
 describe Yast::AutoinstPartPlan do
   FIXTURES_PATH = File.join(File.dirname(__FILE__), 'fixtures')
   let(:target_map_path) { File.join(FIXTURES_PATH, 'storage', "nfs_root.yml") }
+  let(:target_map_clone) { File.join(FIXTURES_PATH, 'storage', 
"target_clone.yml") }
 
   describe "#read partition target" do
 
@@ -28,6 +29,22 @@
         )
     end
 
+    it "ignoring not needed devices" do
+      target_map = YAML.load_file(target_map_clone)
+
+      expect(Yast::Storage).to receive(:GetTargetMap).and_return(target_map)
+      expect(Yast::AutoinstPartPlan.Read).to eq(true)
+      export = Yast::AutoinstPartPlan.Export.select { |d| d.key?("skip_list") }
+      expect(export).to eq(
+        [ { "initialize"=>true,
+            "skip_list"=>
+              [{"skip_key"=>"device", "skip_value"=>"/dev/sdb"},
+               {"skip_key"=>"device", "skip_value"=>"/dev/sde"}]
+          }
+        ]
+      )
+    end
+
   end
 
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/test/Makefile.am 
new/autoyast2-3.1.147/test/Makefile.am
--- old/autoyast2-3.1.140/test/Makefile.am      2016-07-15 14:03:26.000000000 
+0200
+++ new/autoyast2-3.1.147/test/Makefile.am      2016-08-17 10:56:40.000000000 
+0200
@@ -6,6 +6,7 @@
     AutoInstallRules_test.rb \
     AutoInstall_test.rb \
     AutoinstClass_test.rb \
+    AutoinstConfig_tests.rb \
     AutoinstFunctions_test.rb \
     AutoinstGeneral_test.rb \
     AutoinstSoftware_test.rb \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/autoyast2-3.1.140/test/fixtures/storage/target_clone.yml 
new/autoyast2-3.1.147/test/fixtures/storage/target_clone.yml
--- old/autoyast2-3.1.140/test/fixtures/storage/target_clone.yml        
1970-01-01 01:00:00.000000000 +0100
+++ new/autoyast2-3.1.147/test/fixtures/storage/target_clone.yml        
2016-08-17 10:56:40.000000000 +0200
@@ -0,0 +1,673 @@
+---
+"/dev/sda":
+  bus: "SCSI"
+  cyl_count: 138903
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sda"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "gpt"
+  max_logical: 0
+  max_primary: 128
+  model: "IPR-0   5D80CA00"
+  name: "sda"
+  partitions:
+  - detected_fs: :unknown
+    device: "/dev/sda1"
+    fsid: 264
+    fstype: "GPT PReP"
+    name: "sda1"
+    nr: 1
+    region: [0, 2]
+    size_k: 7168
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA0000000080-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:0:0-part1"
+    used_by_device: ""
+    used_by_type: :UB_NONE"
+  - detected_fs: :swap
+    device: "/dev/sda3"
+    fsid: 130
+    fstopt: "defaults"
+    fstype: "Linux swap"
+    mount: "swap"
+    mountby: :uuid
+    name: "sda3"
+    nr: 3
+    region: [133284, 5619]
+    size_k: 45134848
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA0000000080-part3"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:0:0-part3"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :swap
+    uuid: "42e87c44-addf-4863-8121-396bcd34b413"
+  sector_size: 512
+  size_k: 1115742208
+  transport: :unknown
+  type: :CT_DISK
+  udev_id:
+  - "scsi-1IBM_IPR-0_5D80CA0000000080"
+  udev_path: "pci-0001:04:00.0-scsi-0:2:0:0"
+  unique: "R7kM.1O_LPY9+5AC"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/sdb":
+  bus: "SCSI"
+  cyl_count: 138903
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sdb"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "gpt"
+  max_logical: 0
+  max_primary: 128
+  model: "IPR-0   5D80CA00"
+  name: "sdb"
+  partitions:
+  - detected_fs: :btrfs
+    device: "/dev/sdb1"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdb1"
+    nr: 1
+    region: [0, 5223]
+    size_k: 41945088
+    subvol:
+    - name: "@/.snapshots"
+    - name: "@/.snapshots/1/snapshot"
+    - name: "@/opt"
+    - name: "@/srv"
+    - name: "@/tmp"
+    - name: "@/usr/local"
+    - name: "@/var/cache"
+    - name: "@/var/crash"
+    - name: "@/var/lib/libvirt/images"
+      nocow: true
+    - name: "@/var/lib/mailman"
+    - name: "@/var/lib/mariadb"
+      nocow: true
+    - name: "@/var/lib/mysql"
+      nocow: true
+    - name: "@/var/lib/named"
+    - name: "@/var/lib/pgsql"
+      nocow: true
+    - name: "@/var/log"
+    - name: "@/var/opt"
+    - name: "@/var/spool"
+    - name: "@/var/tmp"
+    - name: "@/.snapshots/1/snapshot/var/lib/machines"
+    - name: "@/.snapshots/2/snapshot"
+    - name: "@/.snapshots/3/snapshot"
+    - name: "@/.snapshots/4/snapshot"
+    - name: "@/.snapshots/5/snapshot"
+    - name: "@/.snapshots/6/snapshot"
+    - name: "@/.snapshots/7/snapshot"
+    - name: "@/.snapshots/8/snapshot"
+    - name: "@/.snapshots/9/snapshot"
+    - name: "@/.snapshots/10/snapshot"
+    type: :primary
+    udev_id: ["scsi-0IBM_IPR-0_5D80CA00_0-part1", 
"scsi-1IBM_IPR-0_5D80CA0000000060-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:1:0-part1"
+    used_by:
+    - device: "731e8614-ebc7-4a76-900b-c03045982be3"
+      type: :UB_BTRFS
+    used_by_device: "731e8614-ebc7-4a76-900b-c03045982be3"
+    used_by_type: :UB_BTRFS
+    used_fs: :btrfs
+    uuid: "731e8614-ebc7-4a76-900b-c03045982be3"
+  - detected_fs: :xfs
+    device: "/dev/sdb2"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdb2"
+    nr: 2
+    region: [5222, 133681]
+    size_k: 1073795072
+    type: :primary
+    udev_id: ["scsi-0IBM_IPR-0_5D80CA00_0-part2", 
"scsi-1IBM_IPR-0_5D80CA0000000060-part2"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:1:0-part2"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :xfs
+    uuid: "b6dfed78-5afa-4350-b55d-3594e52ee23f"
+  sector_size: 512
+  size_k: 1115742208
+  transport: :unknown
+  type: :CT_DISK
+  udev_id: ["scsi-0IBM_IPR-0_5D80CA00_0", "scsi-1IBM_IPR-0_5D80CA0000000060"]
+  udev_path: "pci-0001:04:00.0-scsi-0:2:1:0"
+  unique: "uI_Q.1O_LPY9+5AC"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/sdc":
+  bus: "SCSI"
+  cyl_count: 138903
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sdc"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "gpt"
+  max_logical: 0
+  max_primary: 128
+  model: "IPR-0   5D80CA00"
+  name: "sdc"
+  partitions:
+  - detected_fs: :unknown
+    device: "/dev/sdc1"
+    fsid: 264
+    fstype: "GPT PReP"
+    name: "sdc1"
+    nr: 1
+    region: [0, 2]
+    size_k: 7168
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000C0-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:2:0-part1"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+  - detected_fs: :ext4
+    device: "/dev/sdc2"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdc2"
+    nr: 2
+    region: [1, 133283]
+    size_k: 1070595072
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000C0-part2"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:2:0-part2"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :ext4
+    uuid: "0a0b9581-caad-47e7-beb6-cc99b36d2ec9"
+  - detected_fs: :swap
+    device: "/dev/sdc3"
+    fsid: 130
+    fstopt: "defaults"
+    fstype: "Linux swap"
+    mount: "swap"
+    mountby: :uuid
+    name: "sdc3"
+    nr: 3
+    region: [133283, 5620]
+    size_k: 45137920
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000C0-part3"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:2:0-part3"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :swap
+    uuid: "3c8acc18-7459-4a1f-9ecb-88bd1e1c9b55"
+  sector_size: 512
+  size_k: 1115742208
+  transport: :unknown
+  type: :CT_DISK
+  udev_id:
+  - "scsi-1IBM_IPR-0_5D80CA00000000C0"
+  udev_path: "pci-0001:04:00.0-scsi-0:2:2:0"
+  unique: "LUEV.1O_LPY9+5AC"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/sdd":
+  bus: "SCSI"
+  cyl_count: 138903
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sdd"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "msdos"
+  max_logical: 255
+  max_primary: 4
+  model: "IPR-0   5D80CA00"
+  name: "sdd"
+  partitions:
+  - detected_fs: :ext4
+    device: "/dev/sdd1"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdd1"
+    nr: 1
+    region: [0, 51]
+    size_k: 408576
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000E0-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:3:0-part1"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :ext4
+    uuid: "8fd2039f-eabb-4656-8463-d04db2ae89a3"
+  - detected_fs: :unknown
+    device: "/dev/sdd2"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdd2"
+    nr: 2
+    region: [50, 3]
+    size_k: 8192
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000E0-part2"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:3:0-part2"
+    used_by_device: ""
+    used_by_type: :UB_NONE]
+  - detected_fs: :swap
+    device: "/dev/sdd3"
+    fsid: 130
+    fstopt: "defaults"
+    fstype: "Linux swap"
+    mount: "swap"
+    mountby: :uuid
+    name: "sdd3"
+    nr: 3
+    region: [52, 1306]
+    size_k: 10482688
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000E0-part3"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:3:0-part3"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :swap
+    uuid: "e330b520-3e8e-4575-85e1-dfb443c3ea45"
+  - detected_fs: :btrfs
+    device: "/dev/sdd4"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdd4"
+    nr: 4
+    region: [1357, 104432]
+    size_k: 838849536
+    subvol:
+    - name: "@/.snapshots"
+    - name: "@/.snapshots/1/snapshot"
+    - name: "@/home"
+    - name: "@/opt"
+    - name: "@/srv"
+    - name: "@/tmp"
+    - name: "@/usr/local"
+    - name: "@/var/cache"
+    - name: "@/var/crash"
+    - name: "@/var/lib/libvirt/images"
+    - name: "@/var/lib/mailman"
+    - name: "@/var/lib/mariadb"
+    - name: "@/var/lib/mysql"
+    - name: "@/var/lib/named"
+    - name: "@/var/lib/pgsql"
+    - name: "@/var/log"
+    - name: "@/var/opt"
+    - name: "@/var/spool"
+    - name: "@/var/tmp"
+    type: :primary,
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000E0-part4"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:3:0-part4"
+    used_by:
+    - device: "9c1dba5d-a64e-44a6-a72f-e766482a3c62"
+      type: :UB_BTRFS
+    used_by_device: "9c1dba5d-a64e-44a6-a72f-e766482a3c62"
+    used_by_type: :UB_BTRFS
+    used_fs: :btrfs
+    uuid: "9c1dba5d-a64e-44a6-a72f-e766482a3c62"
+  sector_size: 512
+  size_k: 1115742208
+  transport: unknown
+  type: :CT_DISK
+  udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000E0"]
+  udev_path: "pci-0001:04:00.0-scsi-0:2:3:0"
+  unique: "ofUZ.1O_LPY9+5AC"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/sde":
+  bus: "SCSI"
+  cyl_count: 138903
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sde"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "gpt"
+  max_logical: 0
+  max_primary: 128
+  model: "IPR-0   5D80CA00"
+  name: "sde"
+  partitions:
+  - detected_fs: :btrfs
+    device: "/dev/sde1"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sde1"
+    nr: 1
+    region: [0, 5223]
+    size_k: 41945088
+    subvol:
+    - name: "@/.snapshots"
+    - name: "@/.snapshots/1/snapshot"
+    - name: "@/opt"
+    - name: "@/srv"
+    - name: "@/tmp"
+    - name: "@/usr/local"
+    - name: "@/var/cache"
+    - name: "@/var/crash"
+    - name: "@/var/lib/libvirt/images"
+      nocow: true
+    - name: "@/var/lib/mailman"
+    - name: "@/var/lib/mariadb"
+      nocow: true
+    - name: "@/var/lib/mysql"
+      nocow: true
+    - name: "@/var/lib/named"
+    - name: "@/var/lib/pgsql"
+      nocow: true
+    - name: "@/var/log"
+    - name: "@/var/opt"
+    - name: "@/var/spool"
+    - name: "@/var/tmp"
+    - name: "@/.snapshots/1/snapshot/var/lib/machines"
+    - name: "@/.snapshots/2/snapshot"
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA0000000100-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:4:0-part1"
+    used_by:
+    - device: "13c14102-fa63-4a44-8932-76e1d5e62261"
+      type: :UB_BTRFS
+    used_by_device: "13c14102-fa63-4a44-8932-76e1d5e62261"
+    used_by_type: :UB_BTRFS
+    used_fs: :btrfs
+    uuid: "13c14102-fa63-4a44-8932-76e1d5e62261"
+  - detected_fs: :xfs
+    device: "/dev/sde2"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sde2"
+    nr: 2
+    region: [5222, 133681]
+    size_k: 1073795072
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA0000000100-part2"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:4:0-part2"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :xfs
+    uuid: "25515534-39d8-485e-a46e-12b2b909dca6"
+  sector_size: 512
+  size_k: 1115742208
+  transport: unknown
+  type: :CT_DISK
+  udev_id: ["scsi-0IBM_IPR-0_5D80CA00_0", "scsi-1IBM_IPR-0_5D80CA0000000100"]
+  udev_path: "pci-0001:04:00.0-scsi-0:2:4:0"
+  unique: "Frkd.1O_LPY9+5AC"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/sdf":
+  bus: "SCSI"
+  cyl_count: 138903
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sdf"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "msdos"
+  max_logical: 255
+  max_primary: 4
+  model: "IPR-0   5D80CA00"
+  name: "sdf"
+  partitions:
+  - detected_fs: :btrfs
+    device: "/dev/sdf1"
+    fsid: 131
+    fstopt: "defaults"
+    fstype: "Linux native"
+    mount: "/home"
+    mountby: :uuid
+    name: "sdf1"
+    nr: 1
+    region: [0, 5223]
+    size_k: 41945088
+    subvol:
+    - name: "@/.snapshots"
+    - name: "@/.snapshots/1/snapshot"
+    - name: "@/opt"
+    - name: "@/srv"
+    - name: "@/tmp"
+    - name: "@/usr/local"
+    - name: "@/var/cache"
+    - name: "@/var/crash"
+    - name: "@/var/lib/libvirt/images"
+      nocow: true
+    - name: "@/var/lib/mailman"
+    - name: "@/var/lib/mariadb"
+      nocow: true
+    - name: "@/var/lib/mysql"
+      nocow: true
+    - name: "@/var/lib/named"
+    - name: "@/var/lib/pgsql"
+      nocow: true
+    - name: "@/var/log"
+    - name: "@/var/opt"
+    - name: "@/var/spool"
+    - name: "@/var/tmp"
+    - name: "@/.snapshots/1/snapshot/var/lib/machines"
+    - name: "@/.snapshots/2/snapshot"
+    - name: "@/.snapshots/5/snapshot"
+    - name: "@/.snapshots/6/snapshot"
+    - name: "@/.snapshots/7/snapshot"
+    - name: "@/.snapshots/8/snapshot"
+    - name: "@/.snapshots/9/snapshot"
+    - name: "@/.snapshots/10/snapshot"
+    - name: "@/.snapshots/11/snapshot"
+    - name: "@/.snapshots/12/snapshot"
+    - name: "@/.snapshots/13/snapshot"
+    - name: "@/.snapshots/14/snapshot"
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000A0-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:5:0-part1"
+    used_by:
+    - device: "4025ea3c-4d81-41ee-9a97-58dade6f6b53"
+    type: :UB_BTRFS
+    used_by_device: "4025ea3c-4d81-41ee-9a97-58dade6f6b53"
+    used_by_type: :UB_BTRFS
+    used_fs: :btrfs
+    uuid: "4025ea3c-4d81-41ee-9a97-58dade6f6b53"
+  - detected_fs: :btrfs
+    device: "/dev/sdf2"
+    fsid: 131
+    fstopt: "defaults"
+    fstype: "Linux native"
+    mount: "/"
+    mountby: :uuid
+    name: "sdf2"
+    nr: 2
+    region: [5222, 133681]
+    size_k: 1073796096
+    subvol:
+    - name: "@/.snapshots"
+    - name: "@/.snapshots/1/snapshot"
+    - name: "@/opt"
+    - name: "@/srv"
+    - name: "@/tmp"
+    - name: "@/usr/local"
+    - name: "@/var/cache"
+    - name: "@/var/crash"
+    - name: "@/var/lib/libvirt/images"
+      nocow: true
+    - name: "@/var/lib/mailman"
+    - name: "@/var/lib/mariadb"
+      nocow: true
+    - name: "@/var/lib/mysql"
+      nocow: true
+    - name: "@/var/lib/named"
+    - name: "@/var/lib/pgsql"
+      nocow: true
+    - name: "@/var/log"
+    - name: "@/var/opt"
+    - name: "@/var/spool"
+    - name: "@/var/tmp"
+    - name: "@/.snapshots/1/snapshot/var/lib/machines"
+    - name: "@/.snapshots/2/snapshot"
+    - name: "@/.snapshots/3/snapshot"
+    type: :primary
+    udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000A0-part2"]
+    udev_path: "pci-0001:04:00.0-scsi-0:2:5:0-part2"
+    used_by:
+    - device: "04bdb08c-59a0-4ba4-901f-36422bede9fd"
+      type: :UB_BTRFS
+    used_by_device: "04bdb08c-59a0-4ba4-901f-36422bede9fd"
+    used_by_type: :UB_BTRFS
+    used_fs: :btrfs
+    uuid: "04bdb08c-59a0-4ba4-901f-36422bede9fd"
+  sector_size: 512
+  size_k: 1115742208
+  transport: unknown
+  type: :CT_DISK
+  udev_id: ["scsi-1IBM_IPR-0_5D80CA00000000A0"]
+  udev_path: "pci-0001:04:00.0-scsi-0:2:5:0"
+  unique: "i0+h.1O_LPY9+5AC"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/sdg":
+  bus: "SCSI"
+  cyl_count: 36472
+  cyl_size: 8225280
+  dasd_format: 0
+  dasd_type: 0
+  device: "/dev/sdg"
+  driver: "ipr"
+  driver_module: "ipr"
+  label: "gpt"
+  max_logical: 0
+  max_primary: 128
+  model: "MK3001GRRB"
+  name: "sdg"
+  partitions:
+  - detected_fs: :btrfs
+    device: "/dev/sdg1"
+    fsid: 264
+    fstype: "GPT PReP"
+    name: "sdg1"
+    nr: 1
+    region: [0, 2]
+    size_k: 7168
+    type: :primary
+    udev_id: ["scsi-350000394982064f8-part1", 
"scsi-SIBM_MK3001GRRB_23I0A16NFQ92-part1", "wwn-0x50000394982064f8-part1"]
+    udev_path: "pci-0001:04:00.0-scsi-0:0:9:0-part1"
+    used_by:
+    - device: "98907e29-a2f0-4736-9ca3-b46db8e4525b"
+      type: :UB_BTRFS
+    used_by_device: "98907e29-a2f0-4736-9ca3-b46db8e4525b"
+    used_by_type: :UB_BTRFS
+    used_fs: :btrfs
+    uuid: "98907e29-a2f0-4736-9ca3-b46db8e4525b"
+  - detected_fs: :swap
+    device: "/dev/sdg2"
+    fsid: 130
+    fstopt: "defaults"
+    fstype: "Linux swap"
+    mount: "swap"
+    mountby: :uuid
+    name: "sdg2"
+    nr: 2
+    region: [1, 1216]
+    size_k: 9765888
+    type: :primary
+    udev_id: ["scsi-350000394982064f8-part2", 
"scsi-SIBM_MK3001GRRB_23I0A16NFQ92-part2", "wwn-0x50000394982064f8-part2"]
+    udev_path: "pci-0001:04:00.0-scsi-0:0:9:0-part2"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :swap
+    uuid: "12620e4f-b174-4298-a2a7-843f44e0e301"
+  - detected_fs: :ext4
+    device: "/dev/sdg3"
+    fsid: 131
+    fstype: "Linux native"
+    name: "sdg3"
+    nr: 3
+    region: [1216, 35256]
+    size_k: 283194368
+    type: :primary
+    udev_id: ["scsi-350000394982064f8-part3", 
"scsi-SIBM_MK3001GRRB_23I0A16NFQ92-part3", "wwn-0x50000394982064f8-part3"]
+    udev_path: "pci-0001:04:00.0-scsi-0:0:9:0-part3"
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :ext4
+    uuid: "5c21931a-7d58-49c2-ade4-4b79c87a8010"
+  readonly: true
+  sector_size: 512
+  size_k: 292968750
+  transport: unknown
+  type: :CT_DISK
+  udev_id: ["scsi-350000394982064f8", "scsi-SIBM_MK3001GRRB_23I0A16NFQ92", 
"wwn-0x50000394982064f8"]
+  udev_path: "pci-0001:04:00.0-scsi-0:0:9:0"
+  unique: "ACFm.U8llM2w_YdB"
+  used_by_device: ""
+  used_by_type: :UB_NONE
+  vendor: "IBM"
+"/dev/tmpfs":
+  device: "/dev/tmpfs"
+  name: "tmpfs"
+  partitions:
+  - detected_fs: :tmpfs
+    device: "tmpfs"
+    fstype: "TMPFS"
+    ignore_fstab: true
+    mount: "/dev/shm"
+    mountby: :uuid
+    name: "none"
+    size_k: 16514816
+    type: :tmpfs
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :tmpfs
+  - detected_fs: :tmpfs
+    device: "tmpfs"
+    fstype: "TMPFS"
+    ignore_fstab: true
+    mount: "/run"
+    mountby: :uuid
+    name: "none"
+    size_k: 16514816
+    type: ::tmpfs
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :tmpfs
+  - detected_fs: :tmpfs
+    device: "tmpfs"
+    fstype: "TMPFS"
+    ignore_fstab: true
+    mount: "/sys/fs/cgroup"
+    mountby: :uuid
+    name: "none"
+    size_k: 16514816
+    type: :tmpfs
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :tmpfs
+  - detected_fs: :tmpfs
+    device: "tmpfs"
+    fstype: "TMPFS"
+    ignore_fstab: true
+    mount: "/run/user/0"
+    mountby: :uuid
+    name: "none"
+    size_k: 3302976
+    type: :tmpfs
+    used_by_device: ""
+    used_by_type: :UB_NONE
+    used_fs: :tmpfs
+  type: :CT_TMPFS
+  used_by_device: ""
+  used_by_type: :UB_NONE
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/autoyast2-3.1.140/test/include/ask_test.rb 
new/autoyast2-3.1.147/test/include/ask_test.rb
--- old/autoyast2-3.1.140/test/include/ask_test.rb      2016-07-15 
14:03:26.000000000 +0200
+++ new/autoyast2-3.1.147/test/include/ask_test.rb      2016-08-17 
10:56:40.000000000 +0200
@@ -54,13 +54,47 @@
 
         it "creates a TextEntry widget" do
           expect(Yast::UI).to receive(:OpenDialog)
-          expect(client).to receive(:TextEntry).
-            with(Id("0_0"), Opt(:notify), ask["question"], ask["default"]).
+          expect(client).to receive(:InputField).
+            with(Id("0_0"), Opt(:hstretch, :notify, :notifyContextMenu), 
ask["question"], ask["default"]).
             and_call_original
           client.askDialog
         end
       end
 
+      context "when the ask-list contains a question with timeout=0" do
+        let(:ask) { BASE_ASK.merge("timeout" => 0) }
+
+        it "waits for user input infinitely" do
+          expect(Yast::UI).to receive(:OpenDialog)
+          expect(Yast::UI).to receive(:UserInput)
+          client.askDialog
+        end
+      end
+
+      context "when the ask-list contains a question with timeout>0" do
+        timeout_in_sec = 10
+        let(:ask) { BASE_ASK.merge("timeout" => timeout_in_sec) }
+
+        context "when user does not do anything" do
+          it "waits for user input with timeout and then time-outs" do
+            expect(Yast::UI).to receive(:OpenDialog)
+            expect(Yast::UI).to 
receive(:TimeoutUserInput).exactly(timeout_in_sec).times.and_return :timeout
+            client.askDialog
+          end
+        end
+
+        context "when user stops the execution manually" do
+          it "waits for user input with timeout and then stops and waits for 
user infinitely" do
+            expect(Yast::UI).to receive(:OpenDialog)
+            # user does some change in the third second
+            expect(Yast::UI).to 
receive(:TimeoutUserInput).exactly(3).times.and_return(:timeout, :timeout, 
:user_action)
+            # execution stops and wait for user to finish
+            expect(Yast::UI).to receive(:UserInput)
+            client.askDialog
+          end
+        end
+      end
+
       context "when ask-list contains a question with type 'selection'" do
         let(:ask) { BASE_ASK.merge("selection" => items, "default" => 
"desktop") }
         let(:items) {
@@ -86,10 +120,10 @@
         it "creates two Password widgets" do
           expect(Yast::UI).to receive(:OpenDialog)
           expect(client).to receive(:Password).
-            with(Id("0_0"), Opt(:notify), ask["question"], ask["default"]).
+            with(Id("0_0"), Opt(:notify, :notifyContextMenu), ask["question"], 
ask["default"]).
             and_call_original
           expect(client).to receive(:Password).
-            with(Id("0_0_pass2"), Opt(:notify), "", ask["default"]).
+            with(Id("0_0_pass2"), Opt(:notify, :notifyContextMenu), "", 
ask["default"]).
             and_call_original
           client.askDialog
         end
@@ -122,7 +156,7 @@
             Item(Id(:server), "Server", false)
           ]
           expect(client).to receive(:ComboBox).
-            with(Id("0_0"), Opt(:notify), ask["question"], expected_options).
+            with(Id("0_0"), Opt(:notify, :immediate), ask["question"], 
expected_options).
             and_call_original
           client.askDialog
         end
@@ -151,8 +185,8 @@
 
         it "creates one widget for each one of them" do
           expect(Yast::UI).to receive(:OpenDialog)
-          expect(client).to receive(:TextEntry).
-            with(Id("0_0"), Opt(:notify), string_ask["question"], 
string_ask["default"]).
+          expect(client).to receive(:InputField).
+            with(Id("0_0"), Opt(:hstretch, :notify, :notifyContextMenu), 
string_ask["question"], string_ask["default"]).
             and_call_original
           expect(client).to receive(:CheckBox).
             with(Id("0_1"), Opt(:notify), boolean_ask["question"], true).


Reply via email to