1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00
puma--puma/test/test_config.rb
schneems 3f2fb13fcd Ignore multiple port declarations
Right now if you specify a port via `-p $PORT` and via a `config/puma.rb` then puma will incorrectly try to bind to the same port twice and will fail.

This PR calls `uniq!` on the array to remove duplicate ports from the `binds` array.
2015-02-17 08:58:19 -06:00

52 lines
1.2 KiB
Ruby

require 'test/unit'
require 'puma'
require 'puma/configuration'
class TestConfigFile < Test::Unit::TestCase
def test_app_from_app_DSL
opts = { :config_file => "test/config/app.rb" }
conf = Puma::Configuration.new opts
conf.load
app = conf.app
assert_equal [200, {}, ["embedded app"]], app.call({})
end
def test_double_bind_port
port = rand(30_000..40_000).to_s
with_env("PORT" => port) do
opts = { :binds => ["tcp://#{Configuration::DefaultTCPHost}:#{port}"], :config_file => "test/config/app.rb"}
conf = Puma::Configuration.new opts
conf.load
assert_equal ["tcp://0.0.0.0:#{port}"], conf.options[:binds]
end
end
def test_lowleve_error_handler_DSL
opts = { :config_file => "test/config/app.rb" }
conf = Puma::Configuration.new opts
conf.load
app = conf.options[:lowlevel_error_handler]
assert_equal [200, {}, ["error page"]], app.call({})
end
private
def with_env(env = {})
original_env = {}
env.each do |k, v|
original_env[k] = ENV[k]
ENV[k] = v
end
yield
ensure
original_env.each do |k, v|
ENV[k] = v
end
end
end