From 61cddbe3388190b4c2192d78ad0c085f8e37cfe9 Mon Sep 17 00:00:00 2001 From: Thomas Holmes Date: Sun, 21 Jul 2013 20:19:42 -0400 Subject: [PATCH] Update RSpec config to support RSpec 2 and RSpec 3. --- lib/capybara/rspec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/capybara/rspec.rb b/lib/capybara/rspec.rb index 1a917654..f3bc2cad 100644 --- a/lib/capybara/rspec.rb +++ b/lib/capybara/rspec.rb @@ -7,6 +7,12 @@ require 'capybara/rspec/features' RSpec.configure do |config| config.include Capybara::DSL, :type => :feature config.include Capybara::RSpecMatchers, :type => :feature + + # A work-around to support accessing the current example that works in both + # RSpec 2 and RSpec 3. + fetch_current_example = RSpec.respond_to?(:current_example) ? + proc { RSpec.current_example } : proc { |context| context.example } + # The before and after blocks must run instantaneously, because Capybara # might not actually be used in all examples where it's included. config.after do @@ -17,6 +23,7 @@ RSpec.configure do |config| end config.before do if self.class.include?(Capybara::DSL) + example = fetch_current_example.call(self) Capybara.current_driver = Capybara.javascript_driver if example.metadata[:js] Capybara.current_driver = example.metadata[:driver] if example.metadata[:driver] end