mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Use Puma::Server directly so signal handlers aren't overridden
This commit is contained in:
parent
0089fdefd7
commit
5de4295812
2 changed files with 18 additions and 19 deletions
|
@ -439,7 +439,22 @@ end
|
|||
|
||||
Capybara.register_server :puma do |app, port, host, **options|
|
||||
require 'rack/handler/puma'
|
||||
Rack::Handler::Puma.run(app, { Host: host, Port: port, Threads: "0:4", workers: 0, daemon: false }.merge(options))
|
||||
# If we just run the Puma Rack handler it installs signal handlers which prevent us from being able to interrupt tests.
|
||||
# Therefore construct and run the Server instance ourselves.
|
||||
# Rack::Handler::Puma.run(app, { Host: host, Port: port, Threads: "0:4", workers: 0, daemon: false }.merge(options))
|
||||
|
||||
conf = Rack::Handler::Puma.config(app, { Host: host, Port: port, Threads: "0:4", workers: 0, daemon: false }.merge(options))
|
||||
events = conf.options[:Silent] ? ::Puma::Events.strings : ::Puma::Events.stdio
|
||||
|
||||
events.log "Capybara starting Puma..."
|
||||
events.log "* Version #{Puma::Const::PUMA_VERSION} , codename: #{Puma::Const::CODE_NAME}"
|
||||
events.log "* Min threads: #{conf.options[:min_threads]}, max threads: #{conf.options[:max_threads]}"
|
||||
|
||||
Puma::Server.new(conf.app, events, conf.options).tap do |s|
|
||||
s.binder.parse conf.options[:binds], s.events
|
||||
s.min_threads = conf.options[:min_threads]
|
||||
s.max_threads = conf.options[:max_threads]
|
||||
end.run.join
|
||||
end
|
||||
|
||||
Capybara.configure do |config|
|
||||
|
|
|
@ -56,27 +56,11 @@ RSpec.describe Capybara do
|
|||
end
|
||||
|
||||
it "should have :webrick registered" do
|
||||
require 'rack/handler/webrick'
|
||||
mock_app = double('app')
|
||||
Capybara.server = :webrick
|
||||
expect(Rack::Handler::WEBrick).to receive(:run)
|
||||
Capybara.server.call(mock_app, 8000)
|
||||
expect(Capybara.servers[:webrick]).not_to be_nil
|
||||
end
|
||||
|
||||
it "should have :puma registered" do
|
||||
require 'rack/handler/puma'
|
||||
mock_app = double('app')
|
||||
Capybara.server = :puma
|
||||
expect(Rack::Handler::Puma).to receive(:run).with(mock_app, hash_including(Host: nil, Port: 8000))
|
||||
Capybara.server.call(mock_app, 8000)
|
||||
end
|
||||
|
||||
it "should pass options to server" do
|
||||
require 'rack/handler/puma'
|
||||
mock_app = double('app')
|
||||
Capybara.server = :puma, { Silent: true }
|
||||
expect(Rack::Handler::Puma).to receive(:run).with(mock_app, hash_including(Host: nil, Port: 9000, Silent: true))
|
||||
Capybara.server.call(mock_app, 9000)
|
||||
expect(Capybara.servers[:puma]).not_to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue