summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/transaction/resource_harness.rb10
-rwxr-xr-xspec/unit/transaction/resource_harness.rb9
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/puppet/transaction/resource_harness.rb b/lib/puppet/transaction/resource_harness.rb
index 669b0ae98..a7784f344 100644
--- a/lib/puppet/transaction/resource_harness.rb
+++ b/lib/puppet/transaction/resource_harness.rb
@@ -34,8 +34,10 @@ class Puppet::Transaction::ResourceHarness
return [] if ensure_should_be_absent?(current, param)
end
- resource.properties.reject { |p| p.name == :ensure }.find_all do |param|
- param_is_not_insync?(current, param)
+ resource.properties.reject { |p| p.name == :ensure }.reject do |param|
+ param.should.nil?
+ end.reject do |param|
+ param_is_insync?(current, param)
end.collect do |param|
Puppet::Transaction::Change.new(param, current[param.name])
end
@@ -77,7 +79,7 @@ class Puppet::Transaction::ResourceHarness
param.should == :absent
end
- def param_is_not_insync?(current, param)
- ! param.insync?(current[param.name] || :absent)
+ def param_is_insync?(current, param)
+ param.insync?(current[param.name])
end
end
diff --git a/spec/unit/transaction/resource_harness.rb b/spec/unit/transaction/resource_harness.rb
index d6a36db86..2051b2c79 100755
--- a/spec/unit/transaction/resource_harness.rb
+++ b/spec/unit/transaction/resource_harness.rb
@@ -113,6 +113,15 @@ describe Puppet::Transaction::ResourceHarness do
@harness.changes_to_perform(@status, @resource)[0].should equal(change)
end
+ it "should not attempt to manage properties that do not have desired values set" do
+ mode = @resource.newattr(:mode)
+ @current_state[:mode] = :absent
+
+ mode.expects(:insync?).never
+
+ @harness.changes_to_perform(@status, @resource)
+ end
+
describe "and the 'ensure' parameter is present but not in sync" do
it "should return a single change for the 'ensure' parameter" do
@resource[:ensure] = :present