Hello community, here is the log from the commit of package yast2-dhcp-server for openSUSE:Factory checked in at 2016-10-20 23:10:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-dhcp-server (Old) and /work/SRC/openSUSE:Factory/.yast2-dhcp-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-dhcp-server" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-dhcp-server/yast2-dhcp-server.changes 2016-10-10 16:21:24.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-dhcp-server.new/yast2-dhcp-server.changes 2016-10-20 23:10:40.000000000 +0200 @@ -1,0 +2,8 @@ +Thu Oct 20 07:31:59 UTC 2016 - [email protected] + +- allow empty string in primary name server field for dynamic DNS + option to allow what is suggested in documentation for local DNS + servers (bsc#736496) +- 3.2.1 + +------------------------------------------------------------------- Old: ---- yast2-dhcp-server-3.2.0.tar.bz2 New: ---- yast2-dhcp-server-3.2.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-dhcp-server.spec ++++++ --- /var/tmp/diff_new_pack.I9CxqJ/_old 2016-10-20 23:10:41.000000000 +0200 +++ /var/tmp/diff_new_pack.I9CxqJ/_new 2016-10-20 23:10:41.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-dhcp-server -Version: 3.2.0 +Version: 3.2.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ yast2-dhcp-server-3.2.0.tar.bz2 -> yast2-dhcp-server-3.2.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/.travis.yml new/yast2-dhcp-server-3.2.1/.travis.yml --- old/yast2-dhcp-server-3.2.0/.travis.yml 2016-10-06 14:24:28.000000000 +0200 +++ new/yast2-dhcp-server-3.2.1/.travis.yml 2016-10-20 10:14:38.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-perl-bindings" -g "rspec:3.3.0 yast-rake gettext" + - sh ./travis_setup.sh -p "rake yast2-devtools yast2-testsuite yast2 yast2-perl-bindings" -g "rspec:3.3.0 yast-rake gettext simplecov coveralls" script: - rake check:syntax - rake check:pot @@ -13,4 +13,5 @@ - make - sudo make install - make check + - COVERAGE=1 rake test:unit diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/README.md new/yast2-dhcp-server-3.2.1/README.md --- old/yast2-dhcp-server-3.2.0/README.md 2016-10-06 14:24:28.000000000 +0200 +++ new/yast2-dhcp-server-3.2.1/README.md 2016-10-20 10:14:38.000000000 +0200 @@ -2,4 +2,4 @@ [](https://travis-ci.org/yast/yast-dhcp-server) [](https://ci.opensuse.org/view/Yast/job/yast-dhcp-server-master/) - +[](https://coveralls.io/github/yast/yast-dhcp-server?branch=master) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/package/yast2-dhcp-server.changes new/yast2-dhcp-server-3.2.1/package/yast2-dhcp-server.changes --- old/yast2-dhcp-server-3.2.0/package/yast2-dhcp-server.changes 2016-10-06 14:24:28.000000000 +0200 +++ new/yast2-dhcp-server-3.2.1/package/yast2-dhcp-server.changes 2016-10-20 10:14:38.000000000 +0200 @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Thu Oct 20 07:31:59 UTC 2016 - [email protected] + +- allow empty string in primary name server field for dynamic DNS + option to allow what is suggested in documentation for local DNS + servers (bsc#736496) +- 3.2.1 + +------------------------------------------------------------------- Thu Oct 6 11:25:00 UTC 2016 - [email protected] - prevent adding "pool" to global scope as it is allowed only in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/package/yast2-dhcp-server.spec new/yast2-dhcp-server-3.2.1/package/yast2-dhcp-server.spec --- old/yast2-dhcp-server-3.2.0/package/yast2-dhcp-server.spec 2016-10-06 14:24:28.000000000 +0200 +++ new/yast2-dhcp-server-3.2.1/package/yast2-dhcp-server.spec 2016-10-20 10:14:38.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-dhcp-server -Version: 3.2.0 +Version: 3.2.1 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/src/include/dhcp-server/widgets.rb new/yast2-dhcp-server-3.2.1/src/include/dhcp-server/widgets.rb --- old/yast2-dhcp-server-3.2.0/src/include/dhcp-server/widgets.rb 2016-10-06 14:24:28.000000000 +0200 +++ new/yast2-dhcp-server-3.2.1/src/include/dhcp-server/widgets.rb 2016-10-20 10:14:38.000000000 +0200 @@ -702,27 +702,29 @@ # @param [String] id string widget id # @param [Hash] event map event that is handled # @return [Boolean] true if validation succeeded - def DNSZonesValidate(id, event) - event = deep_copy(event) - if !Convert.to_boolean(UI.QueryWidget(Id("ddns_enable"), :Value)) - return true - end - ret = true - Builtins.foreach(["zone", "zone_ip", "reverse_zone", "reverse_ip"]) do |w| - value = Convert.to_string(UI.QueryWidget(Id(w), :Value)) + def DNSZonesValidate(_id, _event) + return true if !UI.QueryWidget(Id("ddns_enable"), :Value) + + ["zone", "zone_ip", "reverse_zone", "reverse_ip"].each do |w| + value = UI.QueryWidget(Id(w), :Value) if (w == "zone" || w == "reverse_zone") && Builtins.regexpmatch(value, "^.*\\.$") value = Builtins.regexpsub(value, "^(.*)\\.$", "\\1") end - if !(Hostname.CheckFQ(value) || - Builtins.contains(["zone_ip", "reverse_ip"], w) && IP.Check4(value)) + ip_field = ["zone_ip", "reverse_ip"].include?(w) + # for primary dns ip can be used + valid_ip = ip_field && IP.Check4(value) + # for dns also empty value can be used + default_ip = ip_field && value.empty? + + if !(Hostname.CheckFQ(value) || valid_ip || default_ip) UI.SetFocus(Id(w)) Report.Error(Hostname.ValidFQ) - ret = false - raise Break + return false end end - ret + + true end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/test/test_helper.rb new/yast2-dhcp-server-3.2.1/test/test_helper.rb --- old/yast2-dhcp-server-3.2.0/test/test_helper.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-dhcp-server-3.2.1/test/test_helper.rb 2016-10-20 10:14:38.000000000 +0200 @@ -0,0 +1,25 @@ +ENV["Y2DIR"] = File.expand_path("../../src", __FILE__) + +require "yast" +require "yast/rspec" + + +if ENV["COVERAGE"] + require "simplecov" + SimpleCov.start do + add_filter "/test/" + end + + # for coverage we need to load all ruby files + src_location = File.expand_path("../../src", __FILE__) + Dir["#{src_location}/{module,lib}/**/*.rb"].each { |f| require_relative f } + + # use coveralls for on-line code coverage reporting at Travis CI + if ENV["TRAVIS"] + require "coveralls" + SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ + SimpleCov::Formatter::HTMLFormatter, + Coveralls::SimpleCov::Formatter + ] + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/test/widgets_test.rb new/yast2-dhcp-server-3.2.1/test/widgets_test.rb --- old/yast2-dhcp-server-3.2.0/test/widgets_test.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-dhcp-server-3.2.1/test/widgets_test.rb 2016-10-20 10:14:38.000000000 +0200 @@ -0,0 +1,73 @@ +require_relative "test_helper" + +Yast.import "UI" + +module Yast + class Test < Yast::Client + def initialize + Yast.include self, "dhcp-server/widgets.rb" + end + end +end + + + +describe "Yast::DhcpServerWidgetsInclude" do + subject { Yast::Test.new } + + describe "#DNSZonesValidate" do + before do + allow(Yast::UI).to receive(:QueryWidget).with(Id("ddns_enable"), :Value) + .and_return(true) + + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone_ip"), :Value) + .and_return("127.0.0.1") + allow(Yast::UI).to receive(:QueryWidget).with(Id("reverse_ip"), :Value) + .and_return("127.0.0.1") + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone"), :Value) + .and_return("test.suse.cz") + allow(Yast::UI).to receive(:QueryWidget).with(Id("reverse_zone"), :Value) + .and_return("test2.suse.cz") + end + + it "returns true if dynanic dns is not enabled" do + allow(Yast::UI).to receive(:QueryWidget).with(Id("ddns_enable"), :Value) + .and_return(false) + # add one failing to test that it do not fail + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone_ip"), :Value) + .and_return("666.666.666.666") + + expect(subject.DNSZonesValidate("ddns_enable", {})).to eq true + end + + it "returns false and report error if zone_ip is invalid IPv4" do + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone_ip"), :Value) + .and_return("666.666.666.666") + expect(Yast::Report).to receive(:Error) + + expect(subject.DNSZonesValidate("ddns_enable", {})).to eq false + end + + it "returns false and report error if zone is not FQDN" do + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone"), :Value) + .and_return("bla***bla") + expect(Yast::Report).to receive(:Error) + + expect(subject.DNSZonesValidate("ddns_enable", {})).to eq false + end + + it "returns true even if zone contains trailing comma" do + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone"), :Value) + .and_return("test.suse.cz.") + + expect(subject.DNSZonesValidate("ddns_enable", {})).to eq true + end + + it "returns true if zone_ip is empty" do + allow(Yast::UI).to receive(:QueryWidget).with(Id("zone_ip"), :Value) + .and_return("") + + expect(subject.DNSZonesValidate("ddns_enable", {})).to eq true + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-dhcp-server-3.2.0/test/yapi_dhcpd_test.rb new/yast2-dhcp-server-3.2.1/test/yapi_dhcpd_test.rb --- old/yast2-dhcp-server-3.2.0/test/yapi_dhcpd_test.rb 2016-10-06 14:24:28.000000000 +0200 +++ new/yast2-dhcp-server-3.2.1/test/yapi_dhcpd_test.rb 2016-10-20 10:14:38.000000000 +0200 @@ -1,9 +1,5 @@ #!/usr/bin/env rspec -require 'rspec' -ENV["Y2DIR"] = File.expand_path("../../src", __FILE__) -require "yast" - module Yast import "YaPI::DHCPD" import "Service"
