Hello community, here is the log from the commit of package yast2-dns-server for openSUSE:Factory checked in at 2018-08-12 20:54:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-dns-server (Old) and /work/SRC/openSUSE:Factory/.yast2-dns-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-dns-server" Sun Aug 12 20:54:56 2018 rev:75 rq:628640 version:4.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-dns-server/yast2-dns-server.changes 2018-07-27 10:58:09.189865996 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-dns-server.new/yast2-dns-server.changes 2018-08-12 20:55:00.469422764 +0200 @@ -1,0 +2,7 @@ +Tue Aug 7 12:14:35 UTC 2018 - dgonza...@suse.com + +- Use CWM::ServiceWidget to manage the service status + (part of fate#319428). +- 4.1.0 + +------------------------------------------------------------------- Old: ---- yast2-dns-server-4.0.4.tar.bz2 New: ---- yast2-dns-server-4.1.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-dns-server.spec ++++++ --- /var/tmp/diff_new_pack.1QJz0s/_old 2018-08-12 20:55:00.881423601 +0200 +++ /var/tmp/diff_new_pack.1QJz0s/_new 2018-08-12 20:55:00.881423601 +0200 @@ -17,7 +17,7 @@ Name: yast2-dns-server -Version: 4.0.4 +Version: 4.1.0 Release: 0 Url: https://github.com/yast/yast-dns-server @@ -33,8 +33,8 @@ BuildRequires: yast2-testsuite BuildRequires: rubygem(rspec) -# SuSEFirewall2 replaced by firewalld -BuildRequires: yast2 >= 4.0.39 +# Yast2::ServiceWidget +BuildRequires: yast2 >= 4.1.0 Requires: /usr/bin/host Requires: perl-gettext # Exporter Data::Dumper @@ -55,8 +55,8 @@ # FATE #303386: Network setup tools Requires: yast2-sysconfig -# SuSEFirewall2 replaced by firewalld -Requires: yast2 >= 4.0.39 +# Yast2::ServiceWidget +Requires: yast2 >= 4.1.0 BuildArch: noarch @@ -82,6 +82,8 @@ %defattr(-,root,root) %dir %{yast_yncludedir}/dns-server %{yast_yncludedir}/dns-server/* +%dir %{yast_libdir}/dns-server +%{yast_libdir}/dns-server/*.rb %{yast_clientdir}/dns-server.rb %{yast_clientdir}/dns-server_*.rb %{yast_moduledir}/* ++++++ yast2-dns-server-4.0.4.tar.bz2 -> yast2-dns-server-4.1.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/package/yast2-dns-server.changes new/yast2-dns-server-4.1.0/package/yast2-dns-server.changes --- old/yast2-dns-server-4.0.4/package/yast2-dns-server.changes 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/package/yast2-dns-server.changes 2018-08-10 16:21:56.000000000 +0200 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Tue Aug 7 12:14:35 UTC 2018 - dgonza...@suse.com + +- Use CWM::ServiceWidget to manage the service status + (part of fate#319428). +- 4.1.0 + +------------------------------------------------------------------- Wed Jul 25 18:20:26 UTC 2018 - knut.anders...@suse.com - Reload the configuration only if the service is running but do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/package/yast2-dns-server.spec new/yast2-dns-server-4.1.0/package/yast2-dns-server.spec --- old/yast2-dns-server-4.0.4/package/yast2-dns-server.spec 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/package/yast2-dns-server.spec 2018-08-10 16:21:56.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-dns-server -Version: 4.0.4 +Version: 4.1.0 Release: 0 Url: https://github.com/yast/yast-dns-server @@ -33,8 +33,8 @@ BuildRequires: yast2-testsuite BuildRequires: rubygem(rspec) -# SuSEFirewall2 replaced by firewalld -BuildRequires: yast2 >= 4.0.39 +# Yast2::ServiceWidget +BuildRequires: yast2 >= 4.1.0 Requires: /usr/bin/host Requires: perl-gettext # Exporter Data::Dumper @@ -55,8 +55,8 @@ # FATE #303386: Network setup tools Requires: yast2-sysconfig -# SuSEFirewall2 replaced by firewalld -Requires: yast2 >= 4.0.39 +# Yast2::ServiceWidget +Requires: yast2 >= 4.1.0 BuildArch: noarch @@ -82,6 +82,8 @@ %defattr(-,root,root) %dir %{yast_yncludedir}/dns-server %{yast_yncludedir}/dns-server/* +%dir %{yast_libdir}/dns-server +%{yast_libdir}/dns-server/*.rb %{yast_clientdir}/dns-server.rb %{yast_clientdir}/dns-server_*.rb %{yast_moduledir}/* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/Makefile.am new/yast2-dns-server-4.1.0/src/Makefile.am --- old/yast2-dns-server-4.0.4/src/Makefile.am 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/src/Makefile.am 2018-08-10 16:21:56.000000000 +0200 @@ -30,6 +30,10 @@ include/dns-server/cmdline.rb \ include/dns-server/helps.rb +ylibdir = @ylibdir@/dns-server +ylib_DATA = \ + lib/dns-server/service_widget_helpers.rb + scrconf_DATA = \ scrconf/dns_zone.scr \ scrconf/cfg_named.scr \ @@ -49,6 +53,6 @@ desktop_DATA = \ desktop/dns-server.desktop -EXTRA_DIST = $(module_DATA) $(module1_DATA) $(client_DATA) $(ynclude_DATA) $(scrconf_DATA) $(agent_SCRIPTS) $(schemafiles_DATA) $(desktop_DATA) +EXTRA_DIST = $(module_DATA) $(module1_DATA) $(client_DATA) $(ynclude_DATA) $(scrconf_DATA) $(agent_SCRIPTS) $(schemafiles_DATA) $(desktop_DATA) $(ylib_DATA) include $(top_srcdir)/Makefile.am.common diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-installwizard.rb new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-installwizard.rb --- old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-installwizard.rb 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-installwizard.rb 2018-08-10 16:21:56.000000000 +0200 @@ -9,8 +9,13 @@ # # Representation of the configuration of dns-server. # Input and output routines. + +require "dns-server/service_widget_helpers" + module Yast module DnsServerDialogInstallwizardInclude + include Y2DnsServer::ServiceWidgetHelpers + def initialize_dns_server_dialog_installwizard(include_target) textdomain "dns-server" @@ -23,6 +28,14 @@ Yast.import "CWMFirewallInterfaces" end + # Writes settings and saves the service + # + # @return [Boolean] true if service is saved successfully; false otherwise + def write_dns_settings + service_widget.store + service.save + end + def runInstallWizardForwardersDialog caption = # Dialog caption (before a colon) @@ -184,22 +197,7 @@ VBox( firewall_layout, ldap_support, - # Label for Radiobuttons - DNS starting - Left(Label(_("Start-up Behavior"))), - Left( - RadioButtonGroup( - Id("dns_server_type"), - VBox( - # Radiobutton label - DNS starting - Left( - RadioButton(Id(:on), _("O&n: Start Now and When Booting")) - ), - # Radiobutton label - DNS starting - Left(RadioButton(Id(:off), _("O&ff: Only Start Manually"))), - VSpacing(1) - ) - ) - ) + service_widget.contents, ), RichText(Id("installation_overview"), rich_text), VSpacing(2), @@ -222,13 +220,6 @@ SetDNSSErverIcon() Wizard.SetNextButton(:next, Label.FinishButton) - auto_start = DnsServer.GetStartService - UI.ChangeWidget( - Id("dns_server_type"), - :CurrentButton, - auto_start ? :on : :off - ) - use_ldap = false # only expert allows to store data in ldap if DnsServer.ExpertUI @@ -270,10 +261,8 @@ end if ret == :next || ret == :expert - DnsServer.SetModified + write_dns_settings - auto_start2 = UI.QueryWidget(Id("dns_server_type"), :CurrentButton) == :on - DnsServer.SetStartService(auto_start2) CWMFirewallInterfaces.OpenFirewallStore(firewall_widget, "", event) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-main.rb new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-main.rb --- old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-main.rb 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-main.rb 2018-08-10 16:21:56.000000000 +0200 @@ -5,12 +5,17 @@ # Summary: Data for configuration of dns-server, input and output functions. # Authors: Jiri Srain <jsr...@suse.cz> -require "ui/service_status" +require "yast" +require "yast2/popup" +require "dns-server/service_widget_helpers" module Yast # Representation of the configuration of dns-server. # Input and output routines. module DnsServerDialogMainInclude + include Yast::Logger + include Y2DnsServer::ServiceWidgetHelpers + def initialize_dns_server_dialog_main(include_target) textdomain "dns-server" @@ -259,20 +264,9 @@ @functions = { :abort => fun_ref(method(:confirmAbort), "boolean ()") } end - def InitStartUp(_key) - status_widget.refresh - nil - end + def handle_apply(_key, event) + SaveAndRestart(event) if event["ID"] == "apply" - def HandleStartUp(_key, event) - event_id = event["ID"] - if event_id == "apply" - SaveAndRestart() - else - if status_widget.handle_input(event_id) == :enabled_flag - DnsServer.SetStartService(status_widget.enabled_flag?) - end - end nil end @@ -895,7 +889,7 @@ _("Really set this\noption without any value?\n") ) return false - end + end # it is a YES or NO type elsif OptionsIsYesNoType(option) # it has not a yes/no value @@ -913,7 +907,7 @@ ) return false end - end + end # it must be a number elsif OptionsIsNumberType(option) # if has not a number value @@ -1876,38 +1870,72 @@ end # Write settings dialog - # @return `abort if aborted and `next otherwise + # + # @return [Symbol] :next whether configuration is saved successfully + # :back if user decided to change settings + # :abort otherwise def WriteDialog - Wizard.RestoreHelp(Ops.get_string(@HELPS, "write", "")) - ret = DnsServer.Write - if ret - service.reload if service.running? && status_widget.reload_flag? - :next - else - if Popup.YesNo(_("Saving the configuration failed. Change the settings?")) - :back - else - :abort - end - end + Wizard.RestoreHelp(write_help_text) + + return :next if write_settings + return :back if back_to_change_setting? + :abort end - # Writes settings and restores the dialog without exiting - def SaveAndRestart + # Writes settings without exiting + def SaveAndRestart(event) + return nil unless validate_and_save_widgets(event) + Wizard.CreateDialog - Wizard.RestoreHelp(Ops.get_string(@HELPS, "write", "")) - ret = DnsServer.Write - if ret - service.reload if service.running? && status_widget.reload_flag? - else - Report.Error(_("Saving the configuration failed")) - end - Builtins.sleep(1000) - UI.CloseDialog + Wizard.RestoreHelp(write_help_text) + Report.Error(_("Saving the configuration failed")) unless write_settings + Wizard.CloseDialog + + service_widget.refresh nil end + # Writes DNS server settings and saves the service + # + # @note currently, the DnsServer is a Perl module, reason why the write of + # settings is being performed in two steps. + # + # @return [Boolean] true if settings are saved successfully; false otherwise + def write_settings + DnsServer.Write && service.save + end + + # Shows a popup asking to the user if wants to change settings + # + # @return [Boolean] true if user decides to go back to change settings; false otherwise + def back_to_change_setting? + change_settings_message = _("Saving the configuration failed. Change the settings?") + Yast2::Popup.show(change_settings_message, headline: :warning, buttons: :yes_no) == :yes + end + + # Validates and saves CWM widgets + # + # @param [Hash] event map that triggered saving + # + # @return [Boolean] false if validation fails; true otherwise + def validate_and_save_widgets(event) + return false unless CWM.validate_current_widgets(event) + + CWM.save_current_widgets(event) + + true + end + + # Returns the common help text during settings are being written + # + # @return [String] common help text, if any; empty string otherwise + def write_help_text + @HELPS.fetch("write") { "" } + rescue + "" + end + # Ask for exit without saving # @return event that should be handled, nil if user canceled the exit def confirmAbort @@ -1961,12 +1989,12 @@ "start_up" => { # FIXME: new startup "contents" => VBox( - status_widget.widget, + service_widget.contents, VSpacing(), "firewall", VStretch(), Right( - PushButton(Id("apply"), _("Apply Changes")) + "apply" ) ), # Dialog Label - DNS - expert settings @@ -1981,7 +2009,7 @@ # FIXME: new startup "widget_names" => DnsServer.ExpertUI ? # expert mode - ["start_up", "firewall"] : + ["start_up", "firewall", "apply"] : # simple mode ["start_up", "firewall", "set_icon"] }, @@ -2078,18 +2106,12 @@ # Returns a hash describing the UI widgets def new_widgets @new_widgets ||= { - "start_up" => { - "widget" => :custom, - "custom_widget" => VBox(), - "init" => fun_ref( - method(:InitStartUp), - "void (string)" - ), - "handle" => fun_ref( - method(:HandleStartUp), - "symbol (string, map)" - ), - "help" => status_widget.help + "start_up" => service_widget.cwm_definition, + "apply" => { + "widget" => :push_button, + "label" => _("Apply Changes"), + "handle" => fun_ref(method(:handle_apply), "symbol (string, map)"), + "help" => "" }, "firewall" => CWMFirewallInterfaces.CreateOpenFirewallWidget( { "services" => ["dns"], "display_details" => true } @@ -2224,21 +2246,5 @@ } } end - - # Returns the status widget for service - # - # @return [::UI::ServiceStatus] status widget - # - # @see #service - def status_widget - @status_widget ||= ::UI::ServiceStatus.new(service) - end - - # Returns the 'named' systemd service - # - # @return [SystemdService] 'named' systemd service instance - def service - @service ||= SystemdService.find("named") - end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/lib/dns-server/service_widget_helpers.rb new/yast2-dns-server-4.1.0/src/lib/dns-server/service_widget_helpers.rb --- old/yast2-dns-server-4.0.4/src/lib/dns-server/service_widget_helpers.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-dns-server-4.1.0/src/lib/dns-server/service_widget_helpers.rb 2018-08-10 16:21:56.000000000 +0200 @@ -0,0 +1,44 @@ +# encoding: utf-8 + +# 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. +# encoding: utf-8 + +require "cwm/service_widget" +require "yast2/system_service" + +module Y2DnsServer + module ServiceWidgetHelpers + # Returns the 'named' system service + # + # @return [Yast2::SystemService] 'named' system service + def service + @service ||= Yast2::SystemService.find("named") + end + + # Widget to define status and start mode of the service + # + # @return [CWM::ServiceWidget] + # + # @see #service + def service_widget + @service_widget ||= CWM::ServiceWidget.new(service) + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/modules/DnsServer.pm new/yast2-dns-server-4.1.0/src/modules/DnsServer.pm --- old/yast2-dns-server-4.0.4/src/modules/DnsServer.pm 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/src/modules/DnsServer.pm 2018-08-10 16:21:56.000000000 +0200 @@ -1525,44 +1525,48 @@ $self->update_forwarding(); $ret = {}; - # named has to be started - if ($start_service) - { - my $success = 1; - if (! $write_only) - { - # named is running - if (Service->Status("named") == 0) { - y2milestone("Reloading service 'named'"); - $success = Service->Reload("named") - } else { - y2milestone("Restarting service 'named'"); - $success = Service->Restart("named") - } - } - Service->Enable ("named"); - if (! $success) - { - # Cannot start service 'named', because of error that follows Error:. Do not translate named. - Report->Error (__("Error occurred while starting service named.\n\n")); - $ok = 0; - # There's no 'named' running -> prevent from blocking DNS queries - $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq "bind"; - y2warning("Local forwarder set to: ".GetLocalForwarder()); - } - } - # named has to be stopped - else + + if (Mode->auto() || Mode->config()) { - if (! $write_only) - { - y2milestone("Stopping service 'named'"); - Service->Stop("named"); - # There's no 'named' running. Reset dns forwarder again - $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq "bind"; - y2warning("Local forwarder set to: ".GetLocalForwarder()); - } - Service->Disable ("named"); + # named has to be started + if ($start_service) + { + my $success = 1; + if (! $write_only) + { + # named is running + if (Service->Status("named") == 0) { + y2milestone("Reloading service 'named'"); + $success = Service->Reload("named") + } else { + y2milestone("Restarting service 'named'"); + $success = Service->Restart("named") + } + } + Service->Enable ("named"); + if (! $success) + { + # Cannot start service 'named', because of error that follows Error:. Do not translate named. + Report->Error (__("Error occurred while starting service named.\n\n")); + $ok = 0; + # There's no 'named' running -> prevent from blocking DNS queries + $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq "bind"; + y2warning("Local forwarder set to: ".GetLocalForwarder()); + } + } + # named has to be stopped + else + { + if (! $write_only) + { + y2milestone("Stopping service 'named'"); + Service->Stop("named"); + # There's no 'named' running. Reset dns forwarder again + $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq "bind"; + y2warning("Local forwarder set to: ".GetLocalForwarder()); + } + Service->Disable ("named"); + } } # First run finished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/test/main_test.rb new/yast2-dns-server-4.1.0/test/main_test.rb --- old/yast2-dns-server-4.0.4/test/main_test.rb 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/test/main_test.rb 2018-08-10 16:21:56.000000000 +0200 @@ -1,20 +1,20 @@ #! /usr/bin/env rspec require_relative "test_helper" -require "yast" -require "yast/rspec" + +require "yast2/system_service" +require "dns-server/service_widget_helpers" + +Yast.import "DnsServerUI" describe "DnsServerDialogMainInclude" do class CurrentDialogMain include Yast::I18n include Yast::UIShortcuts + include Y2DnsServer::ServiceWidgetHelpers - attr_accessor :status_widget - attr_accessor :service def initialize Yast.include self, "dns-server/dialog-main.rb" - @status_widget = "status_widget" - @service = "named.service" end end @@ -23,75 +23,56 @@ end describe "#WriteDialog" do - let(:m) { CurrentDialogMain.new } - let(:written) { false } - let(:running) { true } + subject(:main_dialog) { CurrentDialogMain.new } before do - allow(Yast::DnsServer).to receive(:Write).and_return written - allow(m.service).to receive(:running?).and_return running + allow(Yast::DnsServer).to receive(:Write).and_return(dns_configuration_written) + allow(Yast2::SystemService).to receive(:find).and_return(service) end - it "writes the DNS configuration" do - expect(Yast::DnsServer).to receive(:Write).and_return written - m.WriteDialog - end + let(:service) { instance_double(Yast2::SystemService, save: true) } + let(:dns_configuration_written) { true } - context "when the configuration is written" do - let(:written) { true } - - context "and the named service is running" do - context "and the config is marked to be reloaded" do - it "reloads the service" do - expect(m.status_widget).to receive(:reload_flag?).and_return true - expect(m.service).to receive(:reload) - expect(m.WriteDialog ).to eq(:next) - end - end + context "when DNS configuration is written" do + it "saves the system service" do + expect(service).to receive(:save) - context "and the config is not marked to be reloaded" do - it "does not restart nor reload the service" do - expect(m.status_widget).to receive(:reload_flag?).and_return false - expect(m.service).to_not receive(:reload) - expect(m.service).to_not receive(:restart) - expect(m.WriteDialog ).to eq(:next) - end - end + main_dialog.WriteDialog end - context "and the named service is not running" do - let(:running) { false} - - before do - allow(m.status_widget).to receive(:reload_flag?).and_return true - end - - it "does not restart nor reload the service" do - expect(m.service).to_not receive(:restart) - expect(m.service).to_not receive(:reload) - expect(m.WriteDialog ).to eq(:next) - end + it "returns :next" do + expect(main_dialog.WriteDialog).to eq(:next) end end context "when the configuration is not written" do - let(:written) { false } + before do + allow(Yast2::Popup).to receive(:show).and_return(change_settings) + end + + let(:change_settings) { :yes } + let(:dns_configuration_written) { false } it "aks for changing the current settings" do - expect(Yast::Popup).to receive(:YesNo) - m.WriteDialog + expect(Yast2::Popup).to receive(:show) + .with(instance_of(String), hash_including(buttons: :yes_no)) + + main_dialog.WriteDialog end - it "returns :back if decided to change the current settings" do - expect(Yast::Popup).to receive(:YesNo).and_return true - expect(m.WriteDialog).to eq(:back) + context "and user decides to change the current setting" do + it "returns :back" do + expect(main_dialog.WriteDialog).to eq(:back) + end end - it "returns :abort if canceled" do - expect(Yast::Popup).to receive(:YesNo).and_return false - expect(m.WriteDialog).to eq(:abort) + context "and user decides to cancel" do + let(:change_settings) { :no } + + it "returns :abort" do + expect(subject.WriteDialog).to eq(:abort) + end end end end - end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/test/service_widget_helpers_test.rb new/yast2-dns-server-4.1.0/test/service_widget_helpers_test.rb --- old/yast2-dns-server-4.0.4/test/service_widget_helpers_test.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-dns-server-4.1.0/test/service_widget_helpers_test.rb 2018-08-10 16:21:56.000000000 +0200 @@ -0,0 +1,48 @@ +#! /usr/bin/env rspec + +require_relative "test_helper" +require "dns-server/service_widget_helpers" + +describe Y2DnsServer::ServiceWidgetHelpers do + class Tester + include Y2DnsServer::ServiceWidgetHelpers + end + + subject { Tester.new } + + before do + allow(Yast2::SystemService).to receive(:find).with("named").and_return(service) + end + + describe "#service" do + context "when service is available" do + let(:service) { double("named") } + + it "returns a service" do + expect(subject.service).to be(service) + end + end + + context "when service is NOT available" do + let(:service) { nil } + + it "returns nil" do + expect(subject.service).to be_nil + end + end + end + + describe "#service_widget" do + let(:service) { double("named") } + + it "creates a service widget for \"named\" service" do + expect(CWM::ServiceWidget).to receive(:new).with(service) + + subject.service_widget + end + + it "returns a CWM::ServiceWidget" do + expect(subject.service_widget).to be_a(CWM::ServiceWidget) + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dns-server-4.0.4/test/test_helper.rb new/yast2-dns-server-4.1.0/test/test_helper.rb --- old/yast2-dns-server-4.0.4/test/test_helper.rb 2018-07-26 11:46:52.000000000 +0200 +++ new/yast2-dns-server-4.1.0/test/test_helper.rb 2018-08-10 16:21:56.000000000 +0200 @@ -21,6 +21,7 @@ ENV["Y2DIR"] = SRC_PATH require "yast" +require "yast/rspec" if ENV["COVERAGE"] require "simplecov"