Module: RSpec::Core::Pending

Included in:
ExampleGroup, MinitestAssertionsAdapter
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb

Overview

Provides methods to mark examples as pending. These methods are available to be called from within any example or hook.

Defined Under Namespace

Classes: SkipDeclaredInExample

Constant Summary collapse

NO_REASON_GIVEN =
'No reason given'
NOT_YET_IMPLEMENTED =
'Not yet implemented'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.mark_fixed!(example) ⇒ Object

Mark example as fixed.

Parameters:



152
153
154
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb', line 152

def self.mark_fixed!(example)
  example.execution_result.pending_fixed = true
end

.mark_pending!(example, message_or_bool) ⇒ Object

Mark example as pending.

Parameters:

  • example (RSpec::Core::Example)

    the example to mark as pending

  • message_or_bool (Boolean, String)

    the message to use, or true



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb', line 135

def self.mark_pending!(example, message_or_bool)
  message = if !message_or_bool || !(String === message_or_bool)
              NO_REASON_GIVEN
            else
              message_or_bool
            end

  example.[:pending] = true
  example.execution_result.pending_message = message
  example.execution_result.pending_fixed = false
end

.mark_skipped!(example, message_or_bool) ⇒ Object

Mark example as skipped.

Parameters:

  • example (RSpec::Core::Example)

    the example to mark as skipped

  • message_or_bool (Boolean, String)

    the message to use, or true



124
125
126
127
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb', line 124

def self.mark_skipped!(example, message_or_bool)
  Pending.mark_pending! example, message_or_bool
  example.[:skip] = true
end

Instance Method Details

#pendingObject #pending(message) ⇒ Object

Note:

When using ‘pending` inside an example body using this method hooks, such as `before(:example)`, have already be run. This means that a failure from the code in the `before` hook will prevent the example from being considered pending, as the example body would not be executed. If you need to consider hooks as pending as well you can use the pending metadata as an alternative, e.g. `it “does something”, pending: “message”`.

Marks an example as pending. The rest of the example will still be executed, and if it passes the example will fail to indicate that the pending can be removed.

Examples:

describe "some behaviour" do
  # reported as "Pending: no reason given"
  it "is pending with no message" do
    pending
    raise "broken"
  end

  # reported as "Pending: something else getting finished"
  it "is pending with a custom message" do
    pending("something else getting finished")
    raise "broken"
  end
end

Parameters:

  • message (String) (defaults to: nil)

    optional message to add to the summary report.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb', line 62

def pending(message=nil)
  current_example = RSpec.current_example

  if block_given?
    raise ArgumentError, <<-EOS.gsub(/^\s+\|/, '')
      |The semantics of `RSpec::Core::Pending#pending` have changed in
      |RSpec 3. In RSpec 2.x, it caused the example to be skipped. In
      |RSpec 3, the rest of the example is still run but is expected to
      |fail, and will be marked as a failure (rather than as pending) if
      |the example passes.
      |
      |Passing a block within an example is now deprecated. Marking the
      |example as pending provides the same behavior in RSpec 3 which was
      |provided only by the block in RSpec 2.x.
      |
      |Move the code in the block provided to `pending` into the rest of
      |the example body.
      |
      |Called from #{CallerFilter.first_non_rspec_line}.
      |
    EOS
  elsif current_example
    Pending.mark_pending! current_example, message
  else
    raise "`pending` may not be used outside of examples, such as in " \
          "before(:context). Maybe you want `skip`?"
  end
end

#skipObject #skip(message) ⇒ Object

Marks an example as pending and skips execution.

Examples:

describe "an example" do
  # reported as "Pending: no reason given"
  it "is skipped with no message" do
    skip
  end

  # reported as "Pending: something else getting finished"
  it "is skipped with a custom message" do
    skip "something else getting finished"
  end
end

Parameters:

  • message (String) (defaults to: nil)

    optional message to add to the summary report.

Raises:



110
111
112
113
114
115
116
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/pending.rb', line 110

def skip(message=nil)
  current_example = RSpec.current_example

  Pending.mark_skipped!(current_example, message) if current_example

  raise SkipDeclaredInExample.new(message)
end