1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00

Server boot timeout is now configurable

This commit is contained in:
Adam Cigánek 2010-11-17 16:40:39 +01:00
parent 5304a3367e
commit 09d6335986
3 changed files with 28 additions and 2 deletions

View file

@ -14,7 +14,7 @@ module Capybara
class << self
attr_accessor :asset_root, :app_host, :run_server, :default_host
attr_accessor :server_port
attr_accessor :server_port, :server_boot_timeout
attr_accessor :default_selector, :default_wait_time, :ignore_hidden_elements
attr_accessor :save_and_open_page_path
@ -166,6 +166,7 @@ end
Capybara.configure do |config|
config.run_server = true
config.server {|app, port| Capybara.run_default_server(app, port)}
config.server_boot_timeout = 10
config.default_selector = :css
config.default_wait_time = 2
config.ignore_hidden_elements = false

View file

@ -65,7 +65,9 @@ module Capybara
Capybara.server.call(Identify.new(@app), @port)
end
Capybara.timeout(10) { if responsive? then true else sleep(0.5) and false end }
Capybara.timeout(Capybara.server_boot_timeout) do
if responsive? then true else sleep(0.5) and false end
end
end
end
rescue TimeoutError

View file

@ -62,4 +62,27 @@ describe Capybara::Server do
@server2a.port.should == @server2b.port
end
it "should wait specified time for the app to boot" do
@slow_app = proc { |env| sleep(1); [200, {}, "Hello Slow Server!"] }
Capybara.server_boot_timeout = 1.5
@server = Capybara::Server.new(@slow_app).boot
@res = Net::HTTP.start(@server.host, @server.port) { |http| http.get('/') }
@res.body.should include('Hello Slow Server')
end
it "should raise an exception if boot timeout is exceeded" do
@slow_app = proc { |env| sleep(1); [200, {}, "Hello Slow Server!"] }
# HACK: Capybara::Server does Kernel#exit on timeout, which makes it difficult
# to test. This makes it easier.
TestableServer = Class.new(Capybara::Server) do
def exit; :timeout; end
end
Capybara.server_boot_timeout = 0.5
TestableServer.new(@slow_app).boot.should == :timeout
end
end