diff options
author | Lamont Granquist <lamont@chef.io> | 2020-05-26 17:39:09 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-26 17:39:09 -0700 |
commit | a9193ba3d0e8f235113c40e59a381853017d225e (patch) | |
tree | ddf230de1d0667b3f6a1858b190216a9da8ab38e | |
parent | 77ccd8fefea2df8a1b7546dd95e5c7dbdddf26df (diff) | |
parent | 6d14ba02ec07b18eb757315d9665b646470f6f56 (diff) | |
download | chef-a9193ba3d0e8f235113c40e59a381853017d225e.tar.gz |
Merge pull request #9890 from chef/lcg/resource_name_fixes
-rw-r--r-- | lib/chef/resource.rb | 11 | ||||
-rw-r--r-- | spec/unit/resource_spec.rb | 14 |
2 files changed, 15 insertions, 10 deletions
diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb index cd96c4c1e9..2c63abeaa3 100644 --- a/lib/chef/resource.rb +++ b/lib/chef/resource.rb @@ -950,16 +950,7 @@ class Chef def self.resource_name(name = NOT_PASSED) # Setter if name != NOT_PASSED - if name - @resource_name = name.to_sym - name = name.to_sym - # FIXME: determine a way to deprecate this magic behavior - unless Chef::ResourceResolver.includes_handler?(name, self) - provides name - end - else - @resource_name = nil - end + @resource_name = name.to_sym rescue nil end @resource_name = nil unless defined?(@resource_name) diff --git a/spec/unit/resource_spec.rb b/spec/unit/resource_spec.rb index a2ba2b272f..3808d99a06 100644 --- a/spec/unit/resource_spec.rb +++ b/spec/unit/resource_spec.rb @@ -492,6 +492,20 @@ describe Chef::Resource do expect(r.resource_name).to eq :blah expect(r.declared_type).to eq :d end + + # This tests some somewhat confusing behavior that used to occur due to the resource_name call + # automatically wiring up the old canonical provides line. + it "setting resoure_name does not override provides in prior resource" do + c1 = Class.new(Chef::Resource) do + resource_name :self_resource_name_test_4 + provides :self_resource_name_test_4 + end + c2 = Class.new(Chef::Resource) do + resource_name :self_resource_name_test_4 + provides(:self_resource_name_test_4) { false } # simulates any filter that does not match + end + expect(Chef::Resource.resource_for_node(:self_resource_name_test_4, node)).to eql(c1) + end end describe "to_json" do |