mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Allow port to be specified on initialize, closes #685
This commit is contained in:
parent
6f145fb069
commit
6d68242d1a
3 changed files with 22 additions and 14 deletions
|
@ -33,10 +33,13 @@ module Capybara
|
|||
|
||||
attr_reader :app, :port
|
||||
|
||||
def initialize(app)
|
||||
def initialize(app, port=Capybara.server_port)
|
||||
@app = app
|
||||
@middleware = Middleware.new(@app)
|
||||
@server_thread = nil # supress warnings
|
||||
@port = port
|
||||
@port ||= Capybara::Server.ports[@app.object_id]
|
||||
@port ||= find_available_port
|
||||
end
|
||||
|
||||
def reset_error!
|
||||
|
@ -64,11 +67,7 @@ module Capybara
|
|||
end
|
||||
|
||||
def boot
|
||||
if @app
|
||||
@port = Capybara::Server.ports[@app.object_id]
|
||||
|
||||
if not @port or not responsive?
|
||||
@port = Capybara.server_port || find_available_port
|
||||
unless responsive?
|
||||
Capybara::Server.ports[@app.object_id] = @port
|
||||
|
||||
@server_thread = Thread.new do
|
||||
|
@ -77,7 +76,6 @@ module Capybara
|
|||
|
||||
Timeout.timeout(60) { @server_thread.join(0.1) until responsive? }
|
||||
end
|
||||
end
|
||||
rescue TimeoutError
|
||||
raise "Rack application timed out during boot"
|
||||
else
|
||||
|
|
|
@ -50,8 +50,8 @@ module Capybara
|
|||
def initialize(mode, app=nil)
|
||||
@mode = mode
|
||||
@app = app
|
||||
if Capybara.run_server and driver.needs_server?
|
||||
@server = Capybara::Server.new(@app).tap(&:boot)
|
||||
if Capybara.run_server and @app and driver.needs_server?
|
||||
@server = Capybara::Server.new(@app).boot
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -39,6 +39,16 @@ describe Capybara::Server do
|
|||
Capybara.server_port = nil
|
||||
end
|
||||
|
||||
it "should use given port" do
|
||||
@app = proc { |env| [200, {}, "Hello Server!"]}
|
||||
@server = Capybara::Server.new(@app, 22790).boot
|
||||
|
||||
@res = Net::HTTP.start(@server.host, 22790) { |http| http.get('/') }
|
||||
@res.body.should include('Hello Server')
|
||||
|
||||
Capybara.server_port = nil
|
||||
end
|
||||
|
||||
it "should find an available port" do
|
||||
@app1 = proc { |env| [200, {}, "Hello Server!"]}
|
||||
@app2 = proc { |env| [200, {}, "Hello Second Server!"]}
|
||||
|
|
Loading…
Add table
Reference in a new issue