summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@chef.io>2020-05-26 17:39:09 -0700
committerGitHub <noreply@github.com>2020-05-26 17:39:09 -0700
commita9193ba3d0e8f235113c40e59a381853017d225e (patch)
treeddf230de1d0667b3f6a1858b190216a9da8ab38e
parent77ccd8fefea2df8a1b7546dd95e5c7dbdddf26df (diff)
parent6d14ba02ec07b18eb757315d9665b646470f6f56 (diff)
downloadchef-a9193ba3d0e8f235113c40e59a381853017d225e.tar.gz
Merge pull request #9890 from chef/lcg/resource_name_fixes
-rw-r--r--lib/chef/resource.rb11
-rw-r--r--spec/unit/resource_spec.rb14
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