Brought back Culerity driver now as subclass of Celerity. Hash style driver options replaced. Capybara.app_host for connecting to running app.

This commit is contained in:
Lenny Marks 2009-12-18 11:40:51 -05:00
parent 4fae6a4a86
commit 481e912c5b
4 changed files with 43 additions and 59 deletions

View File

@ -9,7 +9,7 @@ module Capybara
class NotSupportedByDriverError < CapybaraError; end class NotSupportedByDriverError < CapybaraError; end
class << self class << self
attr_accessor :debug, :asset_root attr_accessor :debug, :asset_root, :app_host
attr_writer :default_selector attr_writer :default_selector
def default_selector def default_selector
@ -31,6 +31,7 @@ module Capybara
autoload :Base, 'capybara/driver/base' autoload :Base, 'capybara/driver/base'
autoload :RackTest, 'capybara/driver/rack_test_driver' autoload :RackTest, 'capybara/driver/rack_test_driver'
autoload :Celerity, 'capybara/driver/celerity_driver' autoload :Celerity, 'capybara/driver/celerity_driver'
autoload :Culerity, 'capybara/driver/culerity_driver'
autoload :Selenium, 'capybara/driver/selenium_driver' autoload :Selenium, 'capybara/driver/selenium_driver'
end end
end end

View File

@ -41,40 +41,14 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
end end
end end
attr_reader :app, :rack_server, :host, :port, :celerity_options, :culerity attr_reader :app, :rack_server
def self.server
unless @_server
@_server = ::Culerity::run_server
at_exit do
@_server.close
end
end
@_server
end
def initialize(app, options = {})
def initialize(app)
@app = app @app = app
unless Capybara.app_host
top_opts = [:driver, :host, :port, :rack, :culerity] Capybara.log("using app host #{Capybara.app_host}")
if options[:rack] == false
@host = options[:host] || 'localhost'
@port = options[:port] || '3001'
Capybara.log("celerity driver using #{host}:#{port}")
else
@rack_server = Capybara::Server.new(@app) @rack_server = Capybara::Server.new(@app)
Capybara.log("celerity driver using rack")
end end
@celerity_options = {
:browser => :firefox,
:log_level => :off
}.merge(options.reject {|k,v| top_opts.include?(k) })
@culerity = options[:culerity] || !RUBY_PLATFORM.match(/java/)
end end
def visit(path) def visit(path)
@ -100,34 +74,19 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
end end
private private
def url(path) def url(path)
if rack_server Capybara.app_host || rack_server.url(path)
rack_server.url(path)
else
"http://#{host}:#{port}#{path}"
end
end end
def browser def browser
unless @_browser unless @_browser
if culerity require 'celerity'
Capybara.log "celerity driver via Culerity" @_browser = ::Celerity::Browser.new(:browser => :firefox, :log_level => :off)
require 'culerity'
@_browser = ::Culerity::RemoteBrowserProxy.new self.class.server, celerity_options
at_exit do
@_browser.exit
end
else
require 'celerity'
@_browser = ::Celerity::Browser.new(celerity_options)
end
end end
@_browser @_browser
end end
end end

View File

@ -0,0 +1,29 @@
require 'culerity'
class Capybara::Driver::Culerity < Capybara::Driver::Celerity
def self.server
unless @_server
@_server = ::Culerity::run_server
at_exit do
@_server.close
end
end
@_server
end
private
def browser
unless @_browser
@_browser = ::Culerity::RemoteBrowserProxy.new self.class.server, {:browser => :firefox, :log_level => :off}
at_exit do
@_browser.exit
end
end
@_browser
end
end

View File

@ -4,14 +4,7 @@ module Capybara
attr_reader :app, :mode, :mode_options attr_reader :app, :mode, :mode_options
def initialize(mode, app) def initialize(mode, app)
if mode.respond_to?(:has_key?) @mode = mode
@mode = mode[:driver]
@mode_options = mode
else
@mode = mode
@mode_options = {}
end
@app = app @app = app
end end
@ -22,8 +15,10 @@ module Capybara
Capybara::Driver::RackTest.new(app) Capybara::Driver::RackTest.new(app)
when :selenium when :selenium
Capybara::Driver::Selenium.new(app) Capybara::Driver::Selenium.new(app)
when :culerity, :celerity when :celerity
Capybara::Driver::Celerity.new(app, mode_options) Capybara::Driver::Celerity.new(app)
when :culerity
Capybara::Driver::Culerity.new(app)
else else
raise Capybara::DriverNotFoundError, "no driver called #{mode} was found" raise Capybara::DriverNotFoundError, "no driver called #{mode} was found"
end end