Skip to content

Commit 7a0a6b6

Browse files
committed
TopLevelGroup. Support top level shared examples
1 parent 4849fa6 commit 7a0a6b6

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

lib/rubocop-rspec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
require_relative 'rubocop/rspec/inject'
1111
require_relative 'rubocop/rspec/node'
1212
require_relative 'rubocop/rspec/top_level_describe'
13-
require_relative 'rubocop/rspec/top_level_group'
1413
require_relative 'rubocop/rspec/wording'
1514
require_relative 'rubocop/rspec/language'
1615
require_relative 'rubocop/rspec/language/node_pattern'
16+
require_relative 'rubocop/rspec/top_level_group'
1717
require_relative 'rubocop/rspec/concept'
1818
require_relative 'rubocop/rspec/example_group'
1919
require_relative 'rubocop/rspec/example'

lib/rubocop/rspec/top_level_group.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ module RuboCop
44
module RSpec
55
# Helper methods for top level example group cops
66
module TopLevelGroup
7+
extend NodePattern::Macros
8+
9+
def_node_matcher :example_or_shared_group?,
10+
(
11+
Language::ExampleGroups::ALL +
12+
Language::SharedGroups::ALL
13+
).block_pattern
14+
715
def on_block(node)
816
return unless respond_to?(:on_top_level_group)
917
return unless top_level_group?(node)
@@ -18,7 +26,8 @@ def top_level_group?(node)
1826
end
1927

2028
def top_level_groups
21-
@top_level_groups ||= top_level_nodes.select { |n| example_group?(n) }
29+
@top_level_groups ||= \
30+
top_level_nodes.select { |n| example_or_shared_group?(n) }
2231
end
2332

2433
def top_level_nodes

spec/rubocop/cop/rspec/subject_stub_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@
349349
context xcontext fcontext
350350
feature xfeature ffeature
351351
example_group
352+
shared_examples shared_examples_for shared_context
352353
].each do |method|
353354
it "flags in top level #{method}" do
354355
expect_offense(<<-RUBY)

0 commit comments

Comments
 (0)