summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Sidorenko <artem@posteo.de>2019-05-20 20:43:54 +0200
committerArtem Sidorenko <artem.sidorenko@t-systems.com>2019-05-20 20:46:11 +0200
commit1ac56538b6865b76ec11490d946546548960c15f (patch)
tree585559764a87153c0f732bdf89713761d25cc382
parentcfbb01cb5648297835941679bc9638d3a823ad5e (diff)
downloadchef-1ac56538b6865b76ec11490d946546548960c15f.tar.gz
Fix delete_resource for resources
with multiple providers Fixes: https://github.com/chef/chef/issues/6158 Signed-off-by: Artem Sidorenko <artem.sidorenko@t-systems.com>
-rw-r--r--lib/chef/resource_collection.rb5
-rw-r--r--spec/unit/resource_collection_spec.rb8
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/chef/resource_collection.rb b/lib/chef/resource_collection.rb
index a1f97a7d12..205c30bbb8 100644
--- a/lib/chef/resource_collection.rb
+++ b/lib/chef/resource_collection.rb
@@ -60,8 +60,9 @@ class Chef
end
def delete(key)
- resource_list.delete(key)
- resource_set.delete(key)
+ res = resource_set.delete(key)
+ resource_list.delete(res.to_s)
+ res
end
# @deprecated
diff --git a/spec/unit/resource_collection_spec.rb b/spec/unit/resource_collection_spec.rb
index c12a005cfc..7f59246a88 100644
--- a/spec/unit/resource_collection_spec.rb
+++ b/spec/unit/resource_collection_spec.rb
@@ -183,6 +183,14 @@ describe Chef::ResourceCollection do
expect(rc).to be_empty
end
+ it "should allow to delete resources with different providers" do
+ pkg = Chef::Resource::YumPackage.new("monkey")
+ rc.insert(pkg, instance_name: "monkey", resource_type: "package")
+ expect(rc).not_to be_empty
+ expect(rc.delete("package[monkey]")).to eql(pkg)
+ expect(rc).to be_empty
+ end
+
it "should raise an exception if you send something strange to delete" do
expect { rc.delete(:symbol) }.to raise_error(ArgumentError)
end