Start servers for async tests before running tests (#1876)

Close #1874
This commit is contained in:
Patrik Ragnarsson 2023-02-12 21:00:44 +01:00 committed by GitHub
parent f10e571f4d
commit e19cad1cb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 18 deletions

View File

@ -1,14 +1,23 @@
require File.expand_path('integration_helper', __dir__)
module IntegrationAsyncHelper
Server = IntegrationHelper::BaseServer
def it(message, &block)
base_port = 5100 + Process.pid % 100
%w(rainbows puma).each_with_index do |server_name, index|
server = IntegrationHelper::BaseServer.new(server_name, base_port + index)
Server.all_async.each do |server|
next unless server.installed?
super("with #{server.name}: #{message}") { server.run_test(self, &block) }
end
end
def self.extend_object(obj)
super
base_port = 5100 + Process.pid % 100
servers = %w(rainbows puma)
servers.each_with_index do |server, index|
Server.run(server, base_port+index, async: true)
end
end
end

View File

@ -13,12 +13,16 @@ module IntegrationHelper
@all ||= []
end
def self.all_async
@all_async ||= []
end
def self.each(&block)
all.each(&block)
end
def self.run(server, port)
new(server, port).run
def self.run(server, port, async: false)
new(server, port, async).run
end
def app_file
@ -29,9 +33,13 @@ module IntegrationHelper
"development"
end
def initialize(server, port)
def initialize(server, port, async)
@installed, @pipe, @server, @port = nil, nil, server, port
Server.all << self
if async
Server.all_async << self
else
Server.all << self
end
end
def run
@ -44,14 +52,7 @@ module IntegrationHelper
def installed?
return @installed unless @installed.nil?
s = case server
when 'HTTP'
'net/http/server'
when 'puma'
'puma/rack/handler'
else
server
end
s = server == 'HTTP' ? 'net/http/server' : server
require s
@installed = true
rescue LoadError

View File

@ -47,7 +47,7 @@ class IntegrationTest < Minitest::Test
}ix
# because Net HTTP Server logs to $stderr by default
assert_match exp, server.log unless server.net_http_server? || server.rainbows?
assert_match exp, server.log unless server.net_http_server?
end
it 'does not generate warnings' do