diff options
author | Artem Sidorenko <artem@posteo.de> | 2019-05-20 20:43:54 +0200 |
---|---|---|
committer | Artem Sidorenko <artem.sidorenko@t-systems.com> | 2019-05-20 20:46:11 +0200 |
commit | 1ac56538b6865b76ec11490d946546548960c15f (patch) | |
tree | 585559764a87153c0f732bdf89713761d25cc382 | |
parent | cfbb01cb5648297835941679bc9638d3a823ad5e (diff) | |
download | chef-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.rb | 5 | ||||
-rw-r--r-- | spec/unit/resource_collection_spec.rb | 8 |
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 |