class RuboCop::Cop::RSpec::Focused

end
expect(foo).to be_empty
it ‘does something’ do
# good
end
expect(foo).to be_empty
it ‘does something’, focus: true do
end
expect(foo).to be_empty
fit ‘does something’ do
# bad
@example
Tests should not be focused.

def autocorrect(node)

def autocorrect(node)
  method, _args, _body = *node
  method_source = method.loc.selector.source
  return if method_source == 'focus'
  range = Parser::Source::Range.new(node.source_range.source_buffer,
                                    method.loc.selector.begin_pos,
                                    method.loc.selector.end_pos)
  -> (corrector) do
    corrector.replace(range, method_source[1..-1])
  end
end

def focus_set_to_true?(metadata)

def focus_set_to_true?(metadata)
  return unless metadata
  metadata.include?(s(:sym, :focus)) || (
    metadata.last &&
    metadata.last.children.any? do |pair|
      pair == s(:pair, s(:sym, :focus), s(:true))
    end
  )
end

def on_block(node)

def on_block(node)
  method, _args, _body = *node
  _receiver, method_name, _object, *metadata = *method
  if FOCUSED_METHODS.include?(method_name) || focus_set_to_true?(metadata)
    add_offense(node, location: :expression, message: MESSAGE)
  end
end