From 6e1ad7cc8dcb6ad9a7584ef658e84e4e368dc2a7 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Thu, 7 Jun 2018 14:06:52 +0100 Subject: [PATCH] (PDK-1007) Handle setting `ensure` to a Symbol through code --- lib/puppet/resource_api.rb | 5 +++++ spec/integration/resource_api_spec.rb | 4 ++++ 2 files changed, 9 insertions(+) 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|