From 6baf359ce72a9720708f4bf42033aeda9c6ab685 Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Tue, 1 Sep 2020 22:23:02 -0700 Subject: [PATCH] Resolve a regression in ResourceOverridesProvidesMethod :facepalm: This is an on_def not an on_send. Add a test to catch this sort of thing in the future. Signed-off-by: Tim Smith --- .../deprecation/resource_overrides_provides_method.rb | 3 ++- .../resource_overrides_provides_method_spec.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb b/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb index 26c3063bf..b81ed3b9c 100644 --- a/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +++ b/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb @@ -33,11 +33,12 @@ module ChefDeprecations # class ResourceOverridesProvidesMethod < Base MSG = "Don't override the provides? method in a resource provider. Use provides :SOME_PROVIDER_NAME instead. This will cause failures in Chef Infra Client 13 and later." - RESTRICT_ON_SEND = [:provides?].freeze def_node_search :provides, '(send nil? :provides ...)' def on_def(node) + return unless node.method_name == :provides? + add_offense(node, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0 end end diff --git a/spec/rubocop/cop/chef/deprecation/resource_overrides_provides_method_spec.rb b/spec/rubocop/cop/chef/deprecation/resource_overrides_provides_method_spec.rb index 48f2b15f5..87bbe43d5 100644 --- a/spec/rubocop/cop/chef/deprecation/resource_overrides_provides_method_spec.rb +++ b/spec/rubocop/cop/chef/deprecation/resource_overrides_provides_method_spec.rb @@ -38,4 +38,12 @@ def provides? end RUBY end + + it "doesn't register an offense with any old method" do + expect_no_offenses(<<~RUBY) + def foo + true + end + RUBY + end end