Module: RSpec::Core::Pending
- Included in:
- ExampleGroup
- Defined in:
- lib/rspec/core/pending.rb
Defined Under Namespace
Classes: SkipDeclaredInExample
Constant Summary
- NO_REASON_GIVEN =
'No reason given'
- NOT_YET_IMPLEMENTED =
'Not yet implemented'
Class Method Summary (collapse)
Instance Method Summary (collapse)
-
- (Object) pending(*args)
Stops execution of an example, and reports it as pending.
- - (Object) pending_no_warning(*args)
-
- (Object) skip(*args)
Backport from RSpec 3 to aid in upgrading.
Class Method Details
+ (Object) const_missing(name)
146 147 148 149 150 151 152 153 |
# File 'lib/rspec/core/pending.rb', line 146 def self.const_missing(name) return super unless name == :PendingDeclaredInExample RSpec.deprecate("RSpec::Core::PendingDeclaredInExample", :replacement => "RSpec::Core::Pending::SkipDeclaredInExample") SkipDeclaredInExample end |
Instance Method Details
- (Object) pending - (Object) pending(message) - (Object) pending(message, &block)
Note:
before(:each)
hooks are eval'd when you use the pending
method within an example. If you want to declare an example pending
and bypass the before
hooks as well, you can pass :pending => true
to the it
method:
it "does something", :pending => true do
# ...
end
or pass :pending => "something else getting finished"
to add a
message to the summary report:
it "does something", :pending => "something else getting finished" do
# ...
end
Stops execution of an example, and reports it as pending. Takes an optional message and block.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rspec/core/pending.rb', line 81 def pending(*args, &block) RSpec.warn_deprecation(<<-EOS.gsub(/^\s+\|/, '')) |The semantics of `RSpec::Core::Pending#pending` are changing in |RSpec 3. In RSpec 2.x, it caused the example to be skipped. In |RSpec 3, the rest of the example will still be run but is expected |to fail, and will be marked as a failure (rather than as pending) |if the example passes. | |Any passed block will no longer be executed. This feature is being |removed since it was semantically inconsistent, and the behaviour it |offered is being made available with the other ways of marking an |example pending. | |To keep the same skip semantics, change `pending` to `skip`. |Otherwise, if you want the new RSpec 3 behavior, you can safely |ignore this warning and continue to upgrade to RSpec 3 without |addressing it. | |Called from #{CallerFilter.first_non_rspec_line}. | EOS pending_no_warning(*args, &block) end |
- (Object) pending_no_warning(*args)
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/rspec/core/pending.rb', line 106 def pending_no_warning(*args) return self.class.before(:each) { pending(*args) } unless RSpec.current_example = args.last.is_a?(Hash) ? args.pop : {} = args.first || NO_REASON_GIVEN if [:unless] || (.has_key?(:if) && ![:if]) return block_given? ? yield : nil end RSpec.current_example.[:pending] = true RSpec.current_example.[:execution_result][:pending_message] = RSpec.current_example.execution_result[:pending_fixed] = false if block_given? begin result = begin yield RSpec.current_example.example_group_instance.instance_eval { verify_mocks_for_rspec } end RSpec.current_example.[:pending] = false rescue Exception => e RSpec.current_example.execution_result[:exception] = e ensure teardown_mocks_for_rspec end if result RSpec.current_example.execution_result[:pending_fixed] = true raise PendingExampleFixedError.new end end raise SkipDeclaredInExample.new() end |
- (Object) skip(*args)
Backport from RSpec 3 to aid in upgrading.
Not using alias method because we explictly want to discard any block.
142 143 144 |
# File 'lib/rspec/core/pending.rb', line 142 def skip(*args) pending_no_warning(*args) end |