diff options
-rw-r--r-- | lib/chef/resource/dnf_package.rb | 20 | ||||
-rw-r--r-- | lib/chef/resource/yum_package.rb | 31 | ||||
-rw-r--r-- | spec/unit/resource/yum_package_spec.rb | 20 |
3 files changed, 57 insertions, 14 deletions
diff --git a/lib/chef/resource/dnf_package.rb b/lib/chef/resource/dnf_package.rb index eb901d7f6a..d712e66cc3 100644 --- a/lib/chef/resource/dnf_package.rb +++ b/lib/chef/resource/dnf_package.rb @@ -34,7 +34,25 @@ class Chef provides :dnf_package # Install a specific arch - property :arch, [ String, Array ] + property :arch, [String, Array], coerce: proc { |x| [x].flatten } + + # Flush the in-memory available/installed cache, this does not flush the dnf caches on disk + property :flush_cache, + Hash, + default: { before: false, after: false }, + coerce: proc { |v| + if v.is_a?(Hash) + v + elsif v.is_a?(Array) + v.each_with_object({}) { |arg, obj| obj[arg] = true } + elsif v.is_a?(TrueClass) || v.is_a?(FalseClass) + { before: v, after: v } + elsif v == :before + { before: true, after: false } + elsif v == :after + { after: true, before: false } + end + } # FIXME: dnf install should downgrade, so this should warn that users do not need to use it any more? property :allow_downgrade, [ true, false ], default: false diff --git a/lib/chef/resource/yum_package.rb b/lib/chef/resource/yum_package.rb index f8b670bd93..1e0ad197ba 100644 --- a/lib/chef/resource/yum_package.rb +++ b/lib/chef/resource/yum_package.rb @@ -26,22 +26,27 @@ class Chef # Install a specific arch property :arch, [ String, Array ] - # the {} on the proc here is because rspec chokes if it's do...end + property :flush_cache, - Hash, - default: { before: false, after: false }, - coerce: proc { |v| - if v.is_a?(Array) - v.each_with_object({}) { |arg, obj| obj[arg] = true } - elsif v.any? - v - else - { before: v, after: v } - end - } + Hash, + default: { before: false, after: false }, + coerce: proc { |v| + if v.is_a?(Hash) + v + elsif v.is_a?(Array) + v.each_with_object({}) { |arg, obj| obj[arg] = true } + elsif v.is_a?(TrueClass) || v.is_a?(FalseClass) + { before: v, after: v } + elsif v == :before + { before: true, after: false } + elsif v == :after + { after: true, before: false } + end + } + property :allow_downgrade, [ true, false ], default: false - property :yum_binary, String + property :yum_binary, String end end end diff --git a/spec/unit/resource/yum_package_spec.rb b/spec/unit/resource/yum_package_spec.rb index dd0d3ae928..bc2d19d50e 100644 --- a/spec/unit/resource/yum_package_spec.rb +++ b/spec/unit/resource/yum_package_spec.rb @@ -65,6 +65,26 @@ describe Chef::Resource::YumPackage, "flush_cache" do @resource.flush_cache(flush_hash) expect(@resource.flush_cache).to eq(flush_hash) end + + it "should allow 'true' for flush_cache" do + @resource.flush_cache(true) + expect(@resource.flush_cache).to eq({ before: true, after: true }) + end + + it "should allow 'false' for flush_cache" do + @resource.flush_cache(false) + expect(@resource.flush_cache).to eq({ before: false, after: false }) + end + + it "should allow ':before' for flush_cache" do + @resource.flush_cache(:before) + expect(@resource.flush_cache).to eq({ before: true, after: false }) + end + + it "should allow ':after' for flush_cache" do + @resource.flush_cache(:after) + expect(@resource.flush_cache).to eq({ before: false, after: true }) + end end describe Chef::Resource::YumPackage, "allow_downgrade" do |