diff options
Diffstat (limited to 'rubocop/cop')
-rw-r--r-- | rubocop/cop/rspec/single_line_hook.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/rubocop/cop/rspec/single_line_hook.rb b/rubocop/cop/rspec/single_line_hook.rb new file mode 100644 index 00000000000..a156b1d34cf --- /dev/null +++ b/rubocop/cop/rspec/single_line_hook.rb @@ -0,0 +1,36 @@ +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 < RuboCop::Cop::RSpec::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 |