diff --git a/lib/puppet/resource_api.rb b/lib/puppet/resource_api.rb index 4bbce058..ee195ee9 100644 --- a/lib/puppet/resource_api.rb +++ b/lib/puppet/resource_api.rb @@ -203,6 +203,11 @@ def insync?(is) define_method(:should=) do |value| @shouldorig = value + + if name == :ensure + value = value.to_s + end + # Puppet requires the @should value to always be stored as an array. We do not use this # for anything else # @see Puppet::Property.should=(value) diff --git a/spec/integration/resource_api_spec.rb b/spec/integration/resource_api_spec.rb index 1933fec3..2b082634 100644 --- a/spec/integration/resource_api_spec.rb +++ b/spec/integration/resource_api_spec.rb @@ -206,6 +206,10 @@ def get(_context) end end + it('ensure is reported as a symbol') { expect(instance[:ensure]).to be_a Symbol } + it('can set ensure to :present') { expect { instance[:ensure] = :present }.not_to raise_error } + it('can set ensure to :absent') { expect { instance[:ensure] = :absent }.not_to raise_error } + context 'when updating encounters an error' do let(:setter) do proc do |context, _changes|