39 lines
820 B
Ruby
39 lines
820 B
Ruby
|
require 'rubocop-rspec'
|
||
|
|
||
|
module RuboCop
|
||
|
module Cop
|
||
|
module RSpec
|
||
|
# This cop checks for single-line hook blocks
|
||
|
#
|
||
|
# @example
|
||
|
#
|
||
|
# # bad
|
||
|
# before { do_something }
|
||
|
# after(:each) { undo_something }
|
||
|
#
|
||
|
# # good
|
||
|
# before do
|
||
|
# do_something
|
||
|
# end
|
||
|
#
|
||
|
# after(:each) do
|
||
|
# undo_something
|
||
|
# end
|
||
|
class SingleLineHook < Cop
|
||
|
MESSAGE = "Don't use single-line hook blocks.".freeze
|
||
|
|
||
|
def_node_search :rspec_hook?, <<~PATTERN
|
||
|
(send nil {:after :around :before} ...)
|
||
|
PATTERN
|
||
|
|
||
|
def on_block(node)
|
||
|
return unless rspec_hook?(node)
|
||
|
return unless node.single_line?
|
||
|
|
||
|
add_offense(node, :expression, MESSAGE)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|