class RuboCop::Cop::RSpec::PendingWithoutReason

end
it ‘does something’, skip: ‘reason’ do
# good
end
it ‘does something’, pending: ‘reason’ do
# good
end
skip ‘reason’
it ‘does something’ do
# good
end
pending ‘reason’
it ‘does something’ do
# good
it ‘does something’
# bad
end
skip
it ‘does something’ do
# bad
end
it ‘does something’, :skip do
# bad
end
skip ‘does something’ do
# bad
end
xdescribe ‘something’ do
# bad
end
pending
it ‘does something’ do
# bad
end
it ‘does something’, :pending do
# bad
end
pending ‘does something’ do
# bad
@example
Checks for pending or skipped examples without reason.

def block_node_example_group?(node)

def block_node_example_group?(node)
  node.block_node &&
    example_group?(node.block_node) &&
    explicit_rspec?(node.receiver)
end

def on_pending_by_metadata(node)

def on_pending_by_metadata(node)
  metadata_without_reason?(node) do |pending|
    add_offense(node, message: "Give the reason for #{pending}.")
  end
end

def on_send(node)

def on_send(node)
  on_pending_by_metadata(node)
  return unless (parent = parent_node(node))
  if spec_group?(parent) || block_node_example_group?(node)
    on_skipped_by_example_method(node)
    on_skipped_by_example_group_method(node)
  elsif example?(parent)
    on_skipped_by_in_example_method(node)
  end
end

def on_skipped_by_example_group_method(node)

def on_skipped_by_example_group_method(node)
  skipped_by_example_group_method?(node) do
    add_offense(node, message: 'Give the reason for skip.')
  end
end

def on_skipped_by_example_method(node)

def on_skipped_by_example_method(node)
  skipped_by_example_method?(node) do |pending|
    add_offense(node, message: "Give the reason for #{pending}.")
  end
  skipped_by_example_method_with_block?(node.parent) do |pending|
    add_offense(node, message: "Give the reason for #{pending}.")
  end
end

def on_skipped_by_in_example_method(node)

def on_skipped_by_in_example_method(node)
  skipped_in_example?(node) do |pending|
    add_offense(node, message: "Give the reason for #{pending}.")
  end
end

def parent_node(node)

def parent_node(node)
  node_or_block = node.block_node || node
  return unless (parent = node_or_block.parent)
  parent.begin_type? && parent.parent ? parent.parent : parent
end