Skip to content

Commit 8b5d8a1

Browse files
committed
Allow ExampleGroup Concept to access config
1 parent 505eb45 commit 8b5d8a1

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

lib/rubocop/cop/rspec/scattered_setup.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def on_block(node)
4242
end
4343

4444
def repeated_hooks(node)
45-
hooks = RuboCop::RSpec::ExampleGroup.new(node)
45+
hooks = RuboCop::RSpec::ExampleGroup.new(node, self)
4646
.hooks
4747
.select(&:knowable_scope?)
4848
.group_by { |hook| [hook.name, hook.scope, hook.metadata] }

lib/rubocop/rspec/example_group.rb

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@ module RuboCop
44
module RSpec
55
# Wrapper for RSpec example groups
66
class ExampleGroup < Concept
7+
# Cop object may be passed into overriden constructor as additional param,
8+
# so we can call predicate on cop itself and will have access to #config
9+
# method in order to use configured language aliases for predicates.
10+
# If no predicate_receiver passed - predicate will be called on
11+
# ExampleGroup as if was before.
12+
def initialize(node, predicate_receiver = self)
13+
@predicate_receiver = predicate_receiver
14+
15+
super(node)
16+
end
17+
718
# @!method scope_change?(node)
819
#
920
# Detect if the node is an example group or shared example
@@ -32,11 +43,14 @@ def hooks
3243

3344
private
3445

46+
attr_reader :predicate_receiver
47+
3548
# Recursively search for predicate within the current scope
3649
#
3750
# Searches node and halts when a scope change is detected
3851
#
3952
# @param node [RuboCop::Node] node to recursively search
53+
# @param predicate [Symbol] method to call with node as argument
4054
#
4155
# @return [Array<RuboCop::Node>] discovered nodes
4256
def find_all_in_scope(node, predicate)
@@ -46,7 +60,7 @@ def find_all_in_scope(node, predicate)
4660
end
4761

4862
def find_all(node, predicate)
49-
if public_send(predicate, node)
63+
if predicate_receiver.public_send(predicate, node)
5064
[node]
5165
elsif scope_change?(node) || example?(node)
5266
[]

0 commit comments

Comments
 (0)