Skip to content

Commit f782d36

Browse files
committed
Replace named parameters with funccalls in patterns
1 parent aa1b63e commit f782d36

16 files changed

+79
-97
lines changed

lib/rubocop/cop/rspec/described_class.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ class DescribedClass < Base
6565
(block (send (const nil? {:Class :Module :Struct}) :new ...) ...)
6666
PATTERN
6767

68+
def_node_matcher :rspec_block?,
69+
RuboCop::RSpec::Language.block_pattern('#rspec_all')
70+
6871
def_node_matcher :scope_changing_syntax?, '{def class module}'
6972

7073
def_node_matcher :described_constant, <<-PATTERN
@@ -128,7 +131,7 @@ def scope_change?(node)
128131
end
129132

130133
def skippable_block?(node)
131-
node.block_type? && !block_pattern?(node, rspec_all) && skip_blocks?
134+
node.block_type? && !rspec_block?(node) && skip_blocks?
132135
end
133136

134137
def skip_blocks?

lib/rubocop/cop/rspec/dialect.rb

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,15 @@ class Dialect < Base
4747

4848
MSG = 'Prefer `%<prefer>s` over `%<current>s`.'
4949

50-
def on_send(node)
51-
return unless send_pattern?(node, rspec_all)
50+
def_node_matcher :rspec_method?,
51+
RuboCop::RSpec::Language.send_pattern('#rspec_all')
5252

53-
method_name = node.method_name
54-
return unless preferred_methods[method_name]
53+
def on_send(node)
54+
return unless rspec_method?(node)
55+
return unless preferred_methods[node.method_name]
5556

56-
msg = format(MSG, prefer: preferred_method(method_name),
57-
current: method_name)
57+
msg = format(MSG, prefer: preferred_method(node.method_name),
58+
current: node.method_name)
5859

5960
add_offense(node, message: msg) do |corrector|
6061
current = node.loc.selector

lib/rubocop/cop/rspec/empty_example_group.rb

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,9 @@ class EmptyExampleGroup < Base
110110
# end
111111
#
112112
# @param node [RuboCop::AST::Node]
113-
# @param %1 [Proc] Function to match hooks
114113
# @return [Array<RuboCop::AST::Node>] matching nodes
115114
def_node_matcher :examples_inside_block?, <<~PATTERN
116-
(block !#{SEND_PATTERN} _ #examples?(%1))
115+
(block !#{RuboCop::RSpec::Language.send_pattern('#rspec_hooks')} _ #examples?)
117116
PATTERN
118117

119118
# @!method examples_directly_or_in_block?(node)
@@ -125,12 +124,11 @@ class EmptyExampleGroup < Base
125124
# (1..5).each { |divisor| it { is_expected.to divide_by(divisor) } }
126125
#
127126
# @param node [RuboCop::AST::Node]
128-
# @param %1 [Proc] Function to match hooks
129127
# @return [Array<RuboCop::AST::Node>] matching nodes
130128
def_node_matcher :examples_directly_or_in_block?, <<~PATTERN
131129
{
132130
#example_or_group_or_include?
133-
#examples_inside_block?(%1)
131+
#examples_inside_block?
134132
}
135133
PATTERN
136134

@@ -145,18 +143,17 @@ class EmptyExampleGroup < Base
145143
# before { it { whatever here wont run anyway } }
146144
#
147145
# @param node [RuboCop::AST::Node]
148-
# @param %1 [Proc] Function to match hooks
149146
# @return [Array<RuboCop::AST::Node>] matching nodes
150147
def_node_matcher :examples?, <<~PATTERN
151148
{
152-
#examples_directly_or_in_block?(%1)
153-
(begin <#examples_directly_or_in_block?(%1) ...>)
149+
#examples_directly_or_in_block?
150+
(begin <#examples_directly_or_in_block? ...>)
154151
}
155152
PATTERN
156153

157154
def on_block(node)
158155
example_group_body(node) do |body|
159-
add_offense(node.send_node) unless examples?(body, rspec_hooks)
156+
add_offense(node.send_node) unless examples?(body)
160157
end
161158
end
162159

lib/rubocop/cop/rspec/empty_hook.rb

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@ class EmptyHook < Base
2828

2929
MSG = 'Empty hook detected.'
3030

31-
def on_block(node)
32-
return unless block_pattern?(node, rspec_hooks)
33-
return if node.body
31+
def_node_matcher :empty_hook?, <<~PATTERN
32+
(block $#{RuboCop::RSpec::Language.send_pattern('#rspec_hooks')} _ nil?)
33+
PATTERN
3434

35-
add_offense(node.send_node) do |corrector|
36-
range = range_with_surrounding_space(range: node.loc.expression)
37-
corrector.remove(range)
35+
def on_block(node)
36+
empty_hook?(node) do |hook|
37+
add_offense(hook) do |corrector|
38+
range = range_with_surrounding_space(range: node.loc.expression)
39+
corrector.remove(range)
40+
end
3841
end
3942
end
4043
end

lib/rubocop/cop/rspec/empty_line_after_hook.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class EmptyLineAfterHook < Base
4040
MSG = 'Add an empty line after `%<hook>s`.'
4141

4242
def on_block(node)
43-
return unless block_pattern?(node, rspec_hooks)
43+
return unless hook?(node)
4444

4545
missing_separating_line_offense(node) do |method|
4646
format(MSG, hook: method)

lib/rubocop/cop/rspec/expect_in_hook.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class ExpectInHook < Base
2626
def_node_search :expectation, Expectations::ALL.send_pattern
2727

2828
def on_block(node)
29-
return unless block_pattern?(node, rspec_hooks)
29+
return unless hook?(node)
3030
return if node.body.nil?
3131

3232
expectation(node.body) do |expect|

lib/rubocop/cop/rspec/expect_output.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ def on_gvasgn(node)
4242
def inside_example_scope?(node)
4343
return false if node.nil? || example_group?(node)
4444
return true if example?(node)
45-
if block_pattern?(node, rspec_hooks)
46-
return RuboCop::RSpec::Hook.new(node).example?
47-
end
45+
return RuboCop::RSpec::Hook.new(node).example? if hook?(node)
4846

4947
inside_example_scope?(node.parent)
5048
end

lib/rubocop/cop/rspec/hook_argument.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ class HookArgument < Base
6565
EXPLICIT_MSG = 'Use `%<scope>p` for RSpec hooks.'
6666

6767
def_node_matcher :scoped_block, <<-PATTERN
68-
(block $(send _ %1 (sym ${:each :example})) ...)
68+
(block $(send _ #rspec_hooks (sym ${:each :example})) ...)
6969
PATTERN
7070

71-
def_node_matcher :unscoped_block, '(block $(send _ %1) ...)'
71+
def_node_matcher :unscoped_block, '(block $(send _ #rspec_hooks) ...)'
7272

7373
def on_block(node)
7474
hook(node) do |method_send, scope_name|
@@ -110,8 +110,7 @@ def implicit_style?
110110
end
111111

112112
def hook(node, &block)
113-
scoped_block(node, rspec_hooks, &block) ||
114-
unscoped_block(node, rspec_hooks, &block)
113+
scoped_block(node, &block) || unscoped_block(node, &block)
115114
end
116115

117116
def argument_range(send_node)

lib/rubocop/cop/rspec/hooks_before_examples.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def check_hooks(node)
5353

5454
node.each_child_node do |child|
5555
next if child.sibling_index < first_example.sibling_index
56-
next unless block_pattern?(child, rspec_hooks)
56+
next unless hook?(child)
5757

5858
msg = format(MSG, hook: child.method_name)
5959
add_offense(child, message: msg) do |corrector|

lib/rubocop/cop/rspec/leading_subject.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def autocorrect(corrector, node, sibling)
6969

7070
def offending?(node)
7171
let?(node) ||
72-
block_pattern?(node, rspec_hooks) ||
72+
hook?(node) ||
7373
example?(node) ||
7474
spec_group?(node) ||
7575
include?(node)

0 commit comments

Comments
 (0)