diff --git a/CHANGELOG.md b/CHANGELOG.md index 0428b67fa..4f868e939 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Master (Unreleased) * Add `RSpec/RepeatedIncludeExample` cop. ([@biinari][]) +* Fix `RSpec/FilePath` when checking a file with a shared example. ([@pirj][]) ## 1.43.1 (2020-08-17) diff --git a/lib/rubocop/cop/rspec/file_path.rb b/lib/rubocop/cop/rspec/file_path.rb index c67c73faf..544095dce 100644 --- a/lib/rubocop/cop/rspec/file_path.rb +++ b/lib/rubocop/cop/rspec/file_path.rb @@ -69,7 +69,7 @@ class FilePath < Base def_node_search :routing_metadata?, '(pair (sym :type) (sym :routing))' - def on_top_level_group(node) + def on_top_level_example_group(node) return unless top_level_groups.one? const_described(node) do |send_node, described_class, arguments| diff --git a/lib/rubocop/rspec/top_level_group.rb b/lib/rubocop/rspec/top_level_group.rb index d8bc9bbda..cfe56ea95 100644 --- a/lib/rubocop/rspec/top_level_group.rb +++ b/lib/rubocop/rspec/top_level_group.rb @@ -16,7 +16,7 @@ def on_new_investigation return unless root_node top_level_groups.each do |node| - example_group?(node, &method(:on_top_level_example_group)) + on_top_level_example_group(node) if example_group?(node) on_top_level_group(node) end end @@ -29,9 +29,9 @@ def top_level_groups private # Dummy methods to be overridden in the consumer - def on_top_level_example_group; end + def on_top_level_example_group(_node); end - def on_top_level_group; end + def on_top_level_group(_node); end def top_level_group?(node) top_level_groups.include?(node) diff --git a/spec/rubocop/cop/rspec/file_path_spec.rb b/spec/rubocop/cop/rspec/file_path_spec.rb index 97fe04799..fc44613b7 100644 --- a/spec/rubocop/cop/rspec/file_path_spec.rb +++ b/spec/rubocop/cop/rspec/file_path_spec.rb @@ -64,6 +64,12 @@ RUBY end + it 'ignores shared examples' do + expect_no_offenses(<<-RUBY, 'user.rb') + shared_examples_for 'foo' do; end + RUBY + end + it 'skips specs that do not describe a class / method' do expect_no_offenses(<<-RUBY, 'some/class/spec.rb') describe 'Test something' do; end