Class: PryRescue::RSpec
- Inherits:
-
Object
- Object
- PryRescue::RSpec
- Defined in:
- lib/pry-rescue/rspec.rb
Class Method Summary collapse
- .after ⇒ Object
- .after_filters ⇒ Object
- .before ⇒ Object
-
.monkeypatch_capybara ⇒ Object
Shunt Capybara’s after filter from before Pry::rescued to after.
-
.run(example) ⇒ Object
Run an Rspec example within Pry::rescue{ }.
Class Method Details
.after ⇒ Object
42 43 44 |
# File 'lib/pry-rescue/rspec.rb', line 42 def self.after after_filters.each(&:call) end |
.after_filters ⇒ Object
61 62 63 |
# File 'lib/pry-rescue/rspec.rb', line 61 def self.after_filters @after_filters ||= [] end |
.before ⇒ Object
38 39 40 |
# File 'lib/pry-rescue/rspec.rb', line 38 def self.before if defined?(Capybara) end |
.monkeypatch_capybara ⇒ Object
Shunt Capybara’s after filter from before Pry::rescued to after.
The after filter navigates to ‘about:blank’, but people debugging tests probably want to see the page that failed.
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/pry-rescue/rspec.rb', line 50 def self. unless Capybara.respond_to?(:reset_sessions_after_rescue!) class << Capybara alias_method :reset_sessions_after_rescue!, :reset_sessions! def reset_sessions!; end end after_filters << Capybara.method(:reset_sessions_after_rescue!) end end |
.run(example) ⇒ Object
Run an Rspec example within Pry::rescue{ }.
Takes care to ensure that ‘try-again` will work.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/pry-rescue/rspec.rb', line 11 def self.run(example) Pry::rescue do begin before example.binding.eval('@exception = nil; @example && @example.instance_variable_set(:@exception, nil)') example.binding.eval('example.instance_variable_set(:@exception, nil) if defined?(example)') if example.example_group_instance.respond_to?(:__init_memoized, true) example.binding.eval('@example && @example.example_group_instance.instance_variable_set(:@__init_memoized, true)') example.binding.eval('example.example_group_instance.instance_variable_set(:@__init_memoized, true) if defined?(example)') else example.binding.eval('@example && @example.example_group_instance.instance_variable_set(:@__memoized, {})') example.binding.eval('example.example_group_instance.instance_variable_set(:@__memoized, {}) if defined?(example)') end example.run e = example.binding.eval('@exception || @example && @example.instance_variable_get(:@exception)') e ||= example.binding.eval('example.instance_variable_get(:@exception) if defined?(example)') if e Pry::rescued(e) end ensure after end end end |