Class: PryRescue::RSpec
- Inherits:
-
Object
- Object
- PryRescue::RSpec
- Defined in:
- lib/pry-rescue/rspec.rb
Class Method Summary collapse
- .after(example) ⇒ Object
- .after_filters ⇒ Object
- .after_outside ⇒ 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(example) ⇒ Object
36 37 38 39 |
# File 'lib/pry-rescue/rspec.rb', line 36 def self.after(example) e = example.exception Pry::rescued(e) if e end |
.after_filters ⇒ Object
66 67 68 |
# File 'lib/pry-rescue/rspec.rb', line 66 def self.after_filters @after_filters ||= [] end |
.after_outside ⇒ Object
41 42 43 |
# File 'lib/pry-rescue/rspec.rb', line 41 def self.after_outside after_filters.each(&:call) end |
.before ⇒ Object
32 33 34 |
# File 'lib/pry-rescue/rspec.rb', line 32 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.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/pry-rescue/rspec.rb', line 49 def self. unless Capybara.respond_to?(:reset_sessions_after_rescue!) class << Capybara alias_method :reset_sessions_after_rescue!, :reset_sessions! def reset_sessions! return if Capybara.raise_server_errors session_pool.reverse_each do |_mode, session| session.server.reset_error! end 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.
‘example` is a RSpec::Core::Example::Procsy
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/pry-rescue/rspec.rb', line 13 def self.run(example) Pry::rescue do begin before example.example.instance_variable_set(:@exception, nil) example.example_group_instance.instance_variable_set(:@__init_memoized, true) example.run # Rescued will be called in :after hook, which is ran before the second # :around leg ensure after_outside end end end |