class RuboCop::Cop::RSpec::AroundBlock

Checks that around blocks actually run the test.

@example

# bad
around do
  some_method
end

around do |test|
  some_method
end

# good
around do |test|
  some_method
  test.call
end

around do |test|
  some_method
  test.run
end

Constants

MSG_NO_ARG
MSG_UNUSED_ARG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/rspec/around_block.rb, line 39
def on_block(node)
  hook(node) do |(example_proxy)|
    if example_proxy.nil?
      add_no_arg_offense(node)
    else
      check_for_unused_proxy(node, example_proxy)
    end
  end
end

Private Instance Methods

add_no_arg_offense(node) click to toggle source
# File lib/rubocop/cop/rspec/around_block.rb, line 51
def add_no_arg_offense(node)
  add_offense(node, location: :expression, message: MSG_NO_ARG)
end
check_for_unused_proxy(block, proxy) click to toggle source
# File lib/rubocop/cop/rspec/around_block.rb, line 55
def check_for_unused_proxy(block, proxy)
  name, = *proxy

  find_arg_usage(block) do |usage|
    return if usage.include?(s(:lvar, name))
  end

  add_offense(
    proxy,
    location: :expression,
    message: format(MSG_UNUSED_ARG, arg: name)
  )
end