diff options
-rw-r--r-- | lib/chef/provider/service/freebsd.rb | 2 | ||||
-rw-r--r-- | spec/unit/provider/service/freebsd_service_spec.rb | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/chef/provider/service/freebsd.rb b/lib/chef/provider/service/freebsd.rb index 49ba0d7d16..9204e3ef92 100644 --- a/lib/chef/provider/service/freebsd.rb +++ b/lib/chef/provider/service/freebsd.rb @@ -180,7 +180,7 @@ class Chef def set_service_enable(value) lines = read_rc_conf # Remove line that set the old value - lines.delete_if { |line| line =~ /^#{Regexp.escape(service_enable_variable_name)}=/ } + lines.delete_if { |line| line =~ /^\#?\s*#{Regexp.escape(service_enable_variable_name)}=/ } # And append the line that sets the new value at the end lines << "#{service_enable_variable_name}=\"#{value}\"" write_rc_conf(lines) diff --git a/spec/unit/provider/service/freebsd_service_spec.rb b/spec/unit/provider/service/freebsd_service_spec.rb index 91d2d8e063..5a55425d87 100644 --- a/spec/unit/provider/service/freebsd_service_spec.rb +++ b/spec/unit/provider/service/freebsd_service_spec.rb @@ -580,6 +580,13 @@ EOF expect(provider).not_to receive(:write_rc_conf) provider.enable_service end + + it "should remove commented out versions of it being enabled" do + allow(current_resource).to receive(:enabled).and_return(false) + expect(provider).to receive(:read_rc_conf).and_return([ "foo", "bar", "\# #{new_resource.service_name}_enable=\"YES\"", "\# #{new_resource.service_name}_enable=\"NO\""]) + expect(provider).to receive(:write_rc_conf).with(["foo", "bar", "#{new_resource.service_name}_enable=\"YES\""]) + provider.enable_service() + end end describe Chef::Provider::Service::Freebsd, "disable_service" do @@ -607,5 +614,12 @@ EOF expect(provider).not_to receive(:write_rc_conf) provider.disable_service() end + + it "should remove commented out versions of it being disabled or enabled" do + allow(current_resource).to receive(:enabled).and_return(true) + expect(provider).to receive(:read_rc_conf).and_return([ "foo", "bar", "\# #{new_resource.service_name}_enable=\"YES\"", "\# #{new_resource.service_name}_enable=\"NO\""]) + expect(provider).to receive(:write_rc_conf).with(["foo", "bar", "#{new_resource.service_name}_enable=\"NO\""]) + provider.disable_service() + end end end |