Class: RuboCop::Cop::RSpec::PendingWithoutReason

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/rspec/pending_without_reason.rb

Overview

Checks for pending or skipped examples without reason.

Examples:

# bad
pending 'does something' do
end

# bad
it 'does something', :pending do
end

# bad
it 'does something' do
  pending
end

# bad
xdescribe 'something' do
end

# bad
skip 'does something' do
end

# bad
it 'does something', :skip do
end

# bad
it 'does something' do
  skip
end

# bad
it 'does something'

# good
it 'does something' do
  pending 'reason'
end

# good
it 'does something' do
  skip 'reason'
end

# good
it 'does something', pending: 'reason' do
end

# good
it 'does something', skip: 'reason' do
end

Constant Summary collapse

MSG =
'Give the reason for pending or skip.'

Instance Method Summary collapse

Methods inherited from Base

inherited, #on_new_investigation

Methods included from RSpec::Language

#example?, #example_group?, #example_group_with_body?, #explicit_rspec?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?

Instance Method Details

#metadata_without_reason?(node) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/rubocop/cop/rspec/pending_without_reason.rb', line 81

def_node_matcher :metadata_without_reason?, "(send #rspec?\n  {#ExampleGroups.all #Examples.all} ...\n  {\n    <(sym ${:pending :skip}) ...>\n    (hash <(pair (sym ${:pending :skip}) true) ...>)\n  }\n)\n"

#on_send(node) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
# File 'lib/rubocop/cop/rspec/pending_without_reason.rb', line 96

def on_send(node)
  (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

#skipped_by_example_group_method?(node) ⇒ Object



92
93
94
# File 'lib/rubocop/cop/rspec/pending_without_reason.rb', line 92

def_node_matcher :skipped_by_example_group_method?, "(send #rspec? ${#ExampleGroups.skipped} ...)\n"

#skipped_by_example_method?(node) ⇒ Object



71
72
73
# File 'lib/rubocop/cop/rspec/pending_without_reason.rb', line 71

def_node_matcher :skipped_by_example_method?, "(send nil? ${#Examples.skipped #Examples.pending})\n"

#skipped_by_example_method_with_block?(node) ⇒ Object



76
77
78
# File 'lib/rubocop/cop/rspec/pending_without_reason.rb', line 76

def_node_matcher :skipped_by_example_method_with_block?, "(any_block (send nil? ${#Examples.skipped #Examples.pending} ...) ...)\n"

#skipped_in_example?(node) ⇒ Object



63
64
65
66
67
68
# File 'lib/rubocop/cop/rspec/pending_without_reason.rb', line 63

def_node_matcher :skipped_in_example?, "{\n  (send nil? ${#Examples.skipped #Examples.pending})\n  (any_block (send nil? ${#Examples.skipped}) ...)\n}\n"