Hello community,

here is the log from the commit of package yast2 for openSUSE:Factory checked 
in at 2015-10-20 16:21:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2 (Old)
 and      /work/SRC/openSUSE:Factory/.yast2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2/yast2.changes      2015-08-29 
20:04:01.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2.new/yast2.changes 2015-10-20 
16:21:51.000000000 +0200
@@ -1,0 +2,27 @@
+Thu Oct  8 10:42:07 UTC 2015 - jreidin...@suse.com
+
+- Fix "stack level too deep" exception if cd-rom repository is
+  needed (bnc#945879)
+- 3.1.152
+
+-------------------------------------------------------------------
+Fri Oct  2 10:25:17 UTC 2015 - an...@suse.com
+
+- UI component for services handling moved from yast2-dns-server
+  to yast2 (fate#318771)
+- 3.1.151
+
+-------------------------------------------------------------------
+Wed Sep 30 13:22:50 UTC 2015 - lsle...@suse.cz
+
+- Properly format the package license in the confirmation dialog
+  to make it better readable (bsc#819311)
+- 3.1.150
+
+-------------------------------------------------------------------
+Fri Sep 11 18:38:11 UTC 2015 - lsle...@suse.cz
+
+- Avoid too many snapshots created during the online migration
+  (bsc#944019)
+
+-------------------------------------------------------------------

Old:
----
  yast2-3.1.149.tar.bz2

New:
----
  yast2-3.1.152.tar.bz2

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

Other differences:
------------------
++++++ yast2.spec ++++++
--- /var/tmp/diff_new_pack.TxEOPi/_old  2015-10-20 16:21:52.000000000 +0200
+++ /var/tmp/diff_new_pack.TxEOPi/_new  2015-10-20 16:21:52.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.1.149
+Version:        3.1.152
 Release:        0
 Url:            https://github.com/yast/yast-yast2
 
@@ -101,8 +101,8 @@
 Conflicts:      autoyast2-installation < 2.16.2
 # country_long.ycp and country.ycp moved to yast2
 Conflicts:      yast2-country < 2.16.3
-# DnsServerAPI moved to yast2.rpm (by mzugec)
-Conflicts:      yast2-dns-server < 2.17.0
+# SrvStatusComponent moved to yast2.rpm
+Conflicts:      yast2-dns-server < 3.1.17
 
 Provides:       yast2-lib-sequencer
 Obsoletes:      yast2-lib-sequencer

++++++ yast2-3.1.149.tar.bz2 -> yast2-3.1.152.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.149/library/control/src/modules/ProductControl.rb 
new/yast2-3.1.152/library/control/src/modules/ProductControl.rb
--- old/yast2-3.1.149/library/control/src/modules/ProductControl.rb     
2015-08-27 11:16:08.000000000 +0200
+++ new/yast2-3.1.152/library/control/src/modules/ProductControl.rb     
2015-10-14 15:21:09.000000000 +0200
@@ -1047,7 +1047,9 @@
     # Get modules of current Workflow
     # @param [String] stage
     # @param [String] mode
-    # @return [Array<String>] modules
+    # @param [String] proptype eg. "initial", "service", network"...
+    # @return [Array<Array(String,Integer)>] modules,
+    #   pairs of ("foo_proposal", presentation_order)
     def getProposals(stage, mode, proptype)
       props = getMatchingProposal(stage, mode, proptype)
       unique_id = Ops.get_string(props, [0, "unique_id"], "")
@@ -1119,7 +1121,11 @@
       current_proposal_textdomain
     end
 
-    # Return proposal Label
+    # @param [String] stage
+    # @param [String] mode
+    # @param [String] proptype eg. "initial", "service", network"...
+    # @return [Hash] one "proposal" element of control.rnc
+    #   where /label is not translated yet but //proposal_tab/label are.
     def getProposalProperties(stage, mode, proptype)
       got_proposals = getMatchingProposal(stage, mode, proptype)
       proposal = Ops.get(got_proposals, 0, {})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/library/general/src/Makefile.am 
new/yast2-3.1.152/library/general/src/Makefile.am
--- old/yast2-3.1.149/library/general/src/Makefile.am   2015-08-27 
11:16:08.000000000 +0200
+++ new/yast2-3.1.152/library/general/src/Makefile.am   2015-10-14 
15:21:09.000000000 +0200
@@ -88,7 +88,8 @@
 ylib2dir = "${yast2dir}/lib/ui"
 ylib2_DATA = \
   lib/ui/dialog.rb \
-  lib/ui/event_dispatcher.rb
+  lib/ui/event_dispatcher.rb \
+  lib/ui/srv_status_component.rb
 
 EXTRA_DIST = $(module_DATA) $(client_DATA) $(scrconf_DATA) $(agent_SCRIPTS) 
$(ydata_DATA) $(fillup_DATA) $(ylib_DATA) $(ylib2_DATA)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.149/library/general/src/lib/ui/srv_status_component.rb 
new/yast2-3.1.152/library/general/src/lib/ui/srv_status_component.rb
--- old/yast2-3.1.149/library/general/src/lib/ui/srv_status_component.rb        
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.152/library/general/src/lib/ui/srv_status_component.rb        
2015-10-14 15:21:09.000000000 +0200
@@ -0,0 +1,241 @@
+# Copyright (c) 2015 SUSE LLC.
+#  All Rights Reserved.
+
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of version 2 or 3 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 Novell about this file by physical or electronic mail,
+#  you may find current contact information at www.suse.com
+
+require "yast"
+Yast.import "Service"
+Yast.import "UI"
+
+module UI
+  # Component encapsulating the widgets for managing the status of services 
(both
+  # currently and on system boot) and the behavior associated to those widgets
+  #
+  # TODO: The API is experimental and subject to change. This component is only
+  # used by yast2-dns-server and should not be used by any other module until
+  # an upcoming refactoring, planned for SLE12-SP2. To see some of the planned
+  # improvements, check https://github.com/yast/yast-yast2/pull/401
+  #
+  # As long as #handle_input is invoked in the event loop, the component will
+  # handle interactive starting and stopping of the service on user demand. In
+  # addition #reload can be used after saving the settings.
+  #
+  # To manage the status on boot, the component can be queried for the user
+  # selection using #enabled?. In addition enabled_callback (in constructor)
+  # can be used to observe the status of the corresponding field in the UI.
+  class SrvStatusComponent
+    include Yast::UIShortcuts
+    include Yast::I18n
+    include Yast::Logger
+
+    # @param service_name [String] name of the service as expected by
+    #   Yast::Service
+    # @param reload [Boolean] initial value for the "reload" checkbox.
+    #   Keep in mind it will always be displayed as unchecked if the service is
+    #   not running, despite the real value.
+    # @param enabled_callback [Proc] callback executed when the "enabled on
+    #   boot" checkbox is changed. The only parameter of the callback is the 
new
+    #   state of the checkbox (boolean).
+    def initialize(service_name, reload: true, enabled_callback: nil)
+      @service_name = service_name
+      @reload = reload
+      @enabled_callback = enabled_callback
+
+      @enabled = service_enabled?
+      @id_prefix = "_srv_status_#{@service_name}"
+      textdomain "base"
+    end
+
+    # @return [YaST::Term]
+    def widget
+      Frame(
+        _("Service Status"),
+        VBox(
+          ReplacePoint(Id("#{id_prefix}_status"), status_widget),
+          reload_widget,
+          VSpacing(),
+          on_boot_widget
+        )
+      )
+    end
+
+    # Handles the input triggered by the widgets, this method must be called in
+    # the event loop of the dialog using the component.
+    def handle_input(input)
+      case input
+      when "#{id_prefix}_stop"
+        stop_service
+        refresh_widget
+      when "#{id_prefix}_start"
+        start_service
+        refresh_widget
+      when "#{id_prefix}_reload"
+        @reload = Yast::UI.QueryWidget(Id(input), :Value)
+      when "#{id_prefix}_enabled"
+        @enabled = Yast::UI.QueryWidget(Id(input), :Value)
+        @enabled_callback.call(@enabled) if @enabled_callback
+      else
+        log.info "Input not handled by SrvStatusComponent: #{input}"
+      end
+    end
+
+    # Updates the widget to reflect the current status of the service and the
+    # settings
+    def refresh_widget
+      Yast::UI.ChangeWidget(Id("#{id_prefix}_reload"), :Enabled, 
service_running?)
+      Yast::UI.ChangeWidget(Id("#{id_prefix}_reload"), :Value, 
service_running? && @reload)
+      Yast::UI.ChangeWidget(Id("#{id_prefix}_enabled"), :Value, @enabled)
+      Yast::UI.ReplaceWidget(Id("#{id_prefix}_status"), status_widget)
+    end
+
+    # Reloads the service only if the user requested so. It should be called
+    # after saving the settings.
+    def reload
+      reload_service if service_running? && @reload
+    end
+
+    # rubocop:disable Style/TrivialAccessors
+
+    # Checks if the user requested the service to be enabled on boot
+    #
+    # @return [Boolean]
+    def enabled?
+      @enabled
+    end
+
+    # rubocop:enable Style/TrivialAccessors
+
+    # Content for the help
+    def help
+      _(
+        "<p><b><big>Current status</big></b><br>\n"\
+        "Displays the current status of the service. The status will remain "\
+        "the same after saving the settings, independently of the value of "\
+        "'start service during boot'.</p>\n"\
+        "<p><b><big>Reload After Saving Settings</big></b><br>\n"\
+        "Only applicable if the service is currently running. "\
+        "Ensures the running service reloads the new configuration after "\
+        "saving it (via 'ok' or 'save' buttons).</p>\n"\
+        "<p><b><big>Start During System Boot</big></b><br>\n"\
+        "Check this field to enable the service at system boot. "\
+        "Un-check it to disable the service. "\
+        "This does not affect the current status of the service in the already 
"\
+        "running system.</p>\n"
+      )
+    end
+
+  protected
+
+    attr_reader :id_prefix
+
+    # Checks if the service is currently running
+    #
+    # Must be redefined for services not following standard procedures
+    #
+    # @return [Boolean]
+    def service_running?
+      Yast::Service.active?(@service_name)
+    end
+
+    # Checks if the service is currently enabled on boot
+    #
+    # Must be redefined for services not following standard procedures
+    #
+    # @return [Boolean]
+    def service_enabled?
+      Yast::Service.enabled?(@service_name)
+    end
+
+    # Starts the service inmediatly
+    #
+    # Must be redefined for services not following standard procedures
+    def start_service
+      log.info "Default implementation of SrvStatusComponent#start_service for 
#{@service_name}"
+      Yast::Service.Start(@service_name)
+    end
+
+    # Stops the service inmediatly
+    #
+    # Must be redefined for services not following standard procedures
+    def stop_service
+      log.info "Default implementation of SrvStatusComponent#stop_service for 
#{@service_name}"
+      Yast::Service.Stop(@service_name)
+    end
+
+    # Reloads the configuration of a running service
+    #
+    # Must be redefined for services not following standard procedures
+    def reload_service
+      log.info "Default implementation of SrvStatusComponent#reload_service 
for #{@service_name}"
+      Yast::Service.Reload(@service_name)
+    end
+
+    # Widget displaying the status and associated buttons
+    def status_widget
+      Left(
+        HBox(
+          Label(_("Current status:")),
+          Label(" "),
+          *label_and_action_widgets
+        )
+      )
+    end
+
+    # Widget to configure the status on boot
+    def on_boot_widget
+      Left(
+        CheckBox(
+          Id("#{id_prefix}_enabled"),
+          Opt(:notify),
+          _("Start During System Boot"),
+          @enabled
+        )
+      )
+    end
+
+    # Widget to configure reloading of the running service
+    def reload_widget
+      opts = [:notify]
+      opts << :disabled unless service_running?
+      Left(
+        CheckBox(
+          Id("#{id_prefix}_reload"),
+          Opt(*opts),
+          _("Reload After Saving Settings"),
+          service_running? && @reload
+        )
+      )
+    end
+
+    def label_and_action_widgets
+      if service_running?
+        [
+          # TRANSLATORS: status of a service
+          Label(_("running")),
+          Label(" "),
+          PushButton(Id("#{id_prefix}_stop"), _("Stop now"))
+        ]
+      else
+        [
+          # TRANSLATORS: status of a service
+          Label(_("stopped")),
+          Label(" "),
+          PushButton(Id("#{id_prefix}_start"), _("Start now"))
+        ]
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/library/general/test/Makefile.am 
new/yast2-3.1.152/library/general/test/Makefile.am
--- old/yast2-3.1.149/library/general/test/Makefile.am  2015-08-27 
11:16:08.000000000 +0200
+++ new/yast2-3.1.152/library/general/test/Makefile.am  2015-10-14 
15:21:09.000000000 +0200
@@ -10,6 +10,7 @@
   os_release_test.rb \
   popup_test.rb \
   proposal_client_test.rb \
+  srv_status_component_test.rb \
   agents_test/proc_meminfo_agent_test.rb
 
 TEST_EXTENSIONS = .rb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.149/library/general/test/srv_status_component_test.rb 
new/yast2-3.1.152/library/general/test/srv_status_component_test.rb
--- old/yast2-3.1.149/library/general/test/srv_status_component_test.rb 
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-3.1.152/library/general/test/srv_status_component_test.rb 
2015-10-14 15:21:09.000000000 +0200
@@ -0,0 +1,147 @@
+#! /usr/bin/env rspec
+
+require_relative "test_helper"
+require "ui/srv_status_component"
+
+# Some helpers to test the UI
+
+def matches_id_and_text?(widget, id, text)
+  return false unless widget.is_a?(Yast::Term)
+  return false unless widget.params
+  return false unless widget.params.any? do |p|
+    p.is_a?(Yast::Term) && p.value == :id && p.params.first =~ id
+  end
+  widget.params.any? { |p| p.is_a?(::String) && p =~ text }
+end
+
+def widget_by_id_and_text(widgets, id, text)
+  widgets.nested_find do |t|
+    matches_id_and_text?(t, /#{id}/, /#{Yast._(text)}/)
+  end
+end
+
+def options_for(term)
+  opt = term.params.find do |p|
+    p.is_a?(Yast::Term) && p.value == :opt
+  end
+  opt.params
+end
+
+def id_for(term)
+  id = term.params.find do |p|
+    p.is_a?(Yast::Term) && p.value == :id
+  end
+  id.params.first
+end
+
+# Class using SrvStatusComponent
+class DummyDialog
+  include Yast::UIShortcuts
+
+  attr_reader :enabled1, :enabled2, :srv1_component, :srv2_component
+
+  def initialize
+    @srv1_component = ::UI::SrvStatusComponent.new(
+      "service1",
+      enabled_callback: ->(e) { @enabled1 = e }
+    )
+    @srv2_component = ::UI::SrvStatusComponent.new("service2")
+    @enabled1 = @srv1_component.enabled?
+    @enabled2 = @srv2_component.enabled?
+  end
+
+  def handle_input(input)
+    @srv1_component.handle_input(input)
+    @srv2_component.handle_input(input)
+  end
+
+  def content
+    VBox(
+      Heading("Dummy dialog"),
+      @srv1_component.widget,
+      @srv2_component.widget,
+      PushButton(Id(:ok), "Ok")
+    )
+  end
+end
+
+module Yast
+  extend Yast::I18n
+  Yast.textdomain "base"
+
+  import "Service"
+  import "UI"
+
+  describe ::UI::SrvStatusComponent do
+    before do
+      allow(Yast::Service).to receive(:enabled?).with("service1").and_return 
true
+      allow(Yast::Service).to receive(:enabled?).with("service2").and_return 
false
+      allow(Yast::Service).to receive(:active?).with("service1").and_return 
true
+      allow(Yast::Service).to receive(:active?).with("service2").and_return 
false
+    end
+
+    let(:dialog) { DummyDialog.new }
+    let(:widgets) { dialog.content }
+    let(:stop_service1) { widget_by_id_and_text(widgets, "service1", "Stop 
now") }
+    let(:start_service2) { widget_by_id_and_text(widgets, "service2", "Start 
now") }
+    let(:reload_service1) { widget_by_id_and_text(widgets, "service1", "Reload 
After Saving Settings") }
+    let(:reload_service2) { widget_by_id_and_text(widgets, "service2", "Reload 
After Saving Settings") }
+    let(:enabled_service1) { widget_by_id_and_text(widgets, "service1", "Start 
During System Boot") }
+    let(:enabled_service2) { widget_by_id_and_text(widgets, "service2", "Start 
During System Boot") }
+
+    describe "#initialize" do
+      it "reads the initial enabled state from the system" do
+        expect(dialog.enabled1).to eq true
+        expect(dialog.enabled2).to eq false
+      end
+    end
+
+    describe "#widget" do
+      it "includes all the UI elements" do
+        expect(stop_service1).not_to be_nil
+        expect(start_service2).not_to be_nil
+        expect(reload_service1).not_to be_nil
+        expect(reload_service2).not_to be_nil
+        expect(enabled_service1).not_to be_nil
+        expect(enabled_service2).not_to be_nil
+      end
+
+      it "disables and unchecks the reload button for stopped services" do
+        expect(options_for(reload_service2).any? { |p| p == :disabled })
+        expect(reload_service2.params.last).to eq false
+      end
+
+      it "enables the reload button for stopped services" do
+        expect(options_for(reload_service1).none? { |p| p == :disabled })
+      end
+    end
+
+    describe "#handle_input" do
+      it "stops the service on user request" do
+        expect(Yast::Service).to receive(:Stop).with("service1")
+        dialog.handle_input(id_for(stop_service1))
+      end
+
+      it "starts the service on user request" do
+        expect(Yast::Service).to receive(:Start).with("service2")
+        dialog.handle_input(id_for(start_service2))
+      end
+
+      it "triggers 'enabled_callback' if available" do
+        allow(Yast::UI).to receive(:QueryWidget).and_return "new_value"
+        dialog.handle_input(id_for(enabled_service1))
+
+        expect(dialog.enabled1).to eq "new_value"
+      end
+
+      it "changes the result of #enabled? on user request" do
+        expect(dialog.srv1_component.enabled?).to eq true
+
+        allow(Yast::UI).to receive(:QueryWidget).and_return false
+        dialog.handle_input(id_for(enabled_service1))
+
+        expect(dialog.srv1_component.enabled?).to eq false
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.149/library/packages/src/modules/PackageCallbacks.rb 
new/yast2-3.1.152/library/packages/src/modules/PackageCallbacks.rb
--- old/yast2-3.1.149/library/packages/src/modules/PackageCallbacks.rb  
2015-08-27 11:16:08.000000000 +0200
+++ new/yast2-3.1.152/library/packages/src/modules/PackageCallbacks.rb  
2015-10-14 15:21:09.000000000 +0200
@@ -3052,7 +3052,7 @@
     def autoeject
       load_config unless @config
 
-      @config[autoeject] || false
+      @config.fetch("automatic_eject", false)
     end
 
     def store_autoeject(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.149/library/packages/src/modules/PackagesUI.rb 
new/yast2-3.1.152/library/packages/src/modules/PackagesUI.rb
--- old/yast2-3.1.149/library/packages/src/modules/PackagesUI.rb        
2015-08-27 11:16:08.000000000 +0200
+++ new/yast2-3.1.152/library/packages/src/modules/PackagesUI.rb        
2015-10-14 15:21:09.000000000 +0200
@@ -31,6 +31,7 @@
 #
 # $Id$
 require "yast"
+require "cgi"
 
 module Yast
   class PackagesUIClass < Module
@@ -150,7 +151,7 @@
           HSpacing(size_x),
           # dialog heading, %1 is package name
           Heading(Builtins.sformat(_("Confirm Package License: %1"), package)),
-          HBox(VSpacing(size_y), RichText(Id(:lic), license)),
+          HBox(VSpacing(size_y), RichText(Id(:lic), format_license(license))),
           VSpacing(1),
           HBox(
             PushButton(Id(:help), Label.HelpButton),
@@ -215,6 +216,23 @@
       ret
     end
 
+    # format the license so it's displayed the same way as in the 
libyui-qt-pkg dialog,
+    # (see 
https://github.com/libyui/libyui-qt-pkg/blob/master/src/YQPkgObjList.cc#L1411
+    # 
https://github.com/libyui/libyui-qt-pkg/blob/master/src/YQPkgTextDialog.cc#L295 
)
+    # @param [String] license the raw license text obtained from libzypp
+    # @return [String] formatted license for displaying in a RichText widget
+    def format_license(license)
+      # check the flag for a preformatted HTML
+      return license.dup if license.include?("<!-- DT:Rich -->")
+
+      ret = CGI.escapeHTML(license)
+
+      # two empty lines mean a new paragraph
+      ret.gsub!("\n\n", "</p><p>")
+
+      "<p>" + ret + "</p>"
+    end
+
     # Run helper function, reads the display_support_status feature from the 
control file
     # @return [Boolean] the read value
     def ReadSupportStatus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/library/packages/test/Makefile.am 
new/yast2-3.1.152/library/packages/test/Makefile.am
--- old/yast2-3.1.149/library/packages/test/Makefile.am 2015-08-27 
11:16:08.000000000 +0200
+++ new/yast2-3.1.152/library/packages/test/Makefile.am 2015-10-14 
15:21:09.000000000 +0200
@@ -1,6 +1,7 @@
 TESTS = \
   dummy_callbacks_test.rb \
   package_callbacks_test.rb \
+  packages_ui_test.rb \
   product_test.rb \
   signature_check_callbacks_test.rb \
   slide_show_test.rb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-3.1.149/library/packages/test/packages_ui_test.rb 
new/yast2-3.1.152/library/packages/test/packages_ui_test.rb
--- old/yast2-3.1.149/library/packages/test/packages_ui_test.rb 1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-3.1.152/library/packages/test/packages_ui_test.rb 2015-10-14 
15:21:09.000000000 +0200
@@ -0,0 +1,29 @@
+#!/usr/bin/env rspec
+
+require_relative "test_helper"
+
+Yast.import "PackagesUI"
+
+describe Yast::PackagesUI do
+  describe "#format_license" do
+    it "returns a preformatted HTML license unchanged" do
+      license = "\n<!-- DT:Rich -->\n<h3>License Confirmation</h3>"
+      expect(Yast::PackagesUI.format_license(license)).to eq(license)
+    end
+
+    it "converts a plain text into a rich text string" do
+      license = "License Confirmation"
+      expect(Yast::PackagesUI.format_license(license)).to 
match(/\A<p>.*<\/p>\z/)
+    end
+
+    it "escapes HTML tags in a plain text license" do
+      license = "License & Patent Confirmation"
+      expect(Yast::PackagesUI.format_license(license)).to include("&amp;")
+    end
+
+    it "converts two empty lines into paragraph separators" do
+      license = "License Confirmation\n\nTerms and Conditions"
+      expect(Yast::PackagesUI.format_license(license)).to 
match(/\A<p>.*<\/p><p>.*<\/p>\z/)
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/package/yast2.changes 
new/yast2-3.1.152/package/yast2.changes
--- old/yast2-3.1.149/package/yast2.changes     2015-08-27 11:16:08.000000000 
+0200
+++ new/yast2-3.1.152/package/yast2.changes     2015-10-14 15:21:09.000000000 
+0200
@@ -1,4 +1,31 @@
 -------------------------------------------------------------------
+Thu Oct  8 10:42:07 UTC 2015 - jreidin...@suse.com
+
+- Fix "stack level too deep" exception if cd-rom repository is
+  needed (bnc#945879)
+- 3.1.152
+
+-------------------------------------------------------------------
+Fri Oct  2 10:25:17 UTC 2015 - an...@suse.com
+
+- UI component for services handling moved from yast2-dns-server
+  to yast2 (fate#318771)
+- 3.1.151
+
+-------------------------------------------------------------------
+Wed Sep 30 13:22:50 UTC 2015 - lsle...@suse.cz
+
+- Properly format the package license in the confirmation dialog
+  to make it better readable (bsc#819311)
+- 3.1.150
+
+-------------------------------------------------------------------
+Fri Sep 11 18:38:11 UTC 2015 - lsle...@suse.cz
+
+- Avoid too many snapshots created during the online migration
+  (bsc#944019)
+
+-------------------------------------------------------------------
 Wed Aug 26 19:25:07 UTC 2015 - mfi...@suse.com
 
 - bnc#897129
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/package/yast2.spec 
new/yast2-3.1.152/package/yast2.spec
--- old/yast2-3.1.149/package/yast2.spec        2015-08-27 11:16:08.000000000 
+0200
+++ new/yast2-3.1.152/package/yast2.spec        2015-10-14 15:21:09.000000000 
+0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2
-Version:        3.1.149
+Version:        3.1.152
 Release:        0
 Url:            https://github.com/yast/yast-yast2
 
@@ -101,8 +101,8 @@
 Conflicts:      autoyast2-installation < 2.16.2
 # country_long.ycp and country.ycp moved to yast2
 Conflicts:      yast2-country < 2.16.3
-# DnsServerAPI moved to yast2.rpm (by mzugec)
-Conflicts:      yast2-dns-server < 2.17.0
+# SrvStatusComponent moved to yast2.rpm
+Conflicts:      yast2-dns-server < 3.1.17
 
 Provides:       yast2-lib-sequencer
 Obsoletes:      yast2-lib-sequencer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/scripts/yast2 
new/yast2-3.1.152/scripts/yast2
--- old/yast2-3.1.149/scripts/yast2     2015-08-27 11:16:08.000000000 +0200
+++ new/yast2-3.1.152/scripts/yast2     2015-10-14 15:21:09.000000000 +0200
@@ -178,7 +178,7 @@
 
 snapshot_pre()
 {
-    if [ "$1" != "menu" ] ; then
+    if [ "$1" != "menu" -a "$1" != "migration" ]; then
        if [ "$USE_SNAPPER" = "yes" -a -x $SNAPPERBIN ] ; then
            SNAPSHOT_NUMBER=`$SNAPPERBIN create --type=pre 
--cleanup-algorithm=number --print-number --description="yast $1"`
        fi
@@ -187,7 +187,7 @@
 
 snapshot_post()
 {
-    if [ "$1" != "menu" ] ; then
+    if [ "$1" != "menu" -a "$1" != "migration" ]; then
        if [ "$USE_SNAPPER" = "yes" -a -x $SNAPPERBIN ] ; then
            $SNAPPERBIN create --type=post --cleanup-algorithm=number 
--pre-number=$SNAPSHOT_NUMBER
        fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-3.1.149/test/test_helper.rb 
new/yast2-3.1.152/test/test_helper.rb
--- old/yast2-3.1.149/test/test_helper.rb       2015-08-27 11:16:08.000000000 
+0200
+++ new/yast2-3.1.152/test/test_helper.rb       2015-10-14 15:21:09.000000000 
+0200
@@ -13,6 +13,19 @@
 require "yast"
 require "yast/rspec"
 
+RSpec.configure do |config|
+  config.mock_with :rspec do |mocks|
+    # If you misremember a method name both in code and in tests,
+    # will save you.
+    # 
https://relishapp.com/rspec/rspec-mocks/v/3-0/docs/verifying-doubles/partial-doubles
+    #
+    # With graceful degradation for RSpec 2
+    if mocks.respond_to?(:verify_partial_doubles=)
+      mocks.verify_partial_doubles = true
+    end
+  end
+end
+
 if ENV["COVERAGE"]
   require "simplecov"
   SimpleCov.start


Reply via email to