From e19cad1cb15ba09c66757c93ccd7de358e2a11b8 Mon Sep 17 00:00:00 2001 From: Patrik Ragnarsson Date: Sun, 12 Feb 2023 21:00:44 +0100 Subject: [PATCH] Start servers for async tests before running tests (#1876) Close #1874 --- test/integration_async_helper.rb | 19 ++++++++++++++----- test/integration_helper.rb | 25 +++++++++++++------------ test/integration_test.rb | 2 +- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/test/integration_async_helper.rb b/test/integration_async_helper.rb index fceceb5e..b246c4ad 100644 --- a/test/integration_async_helper.rb +++ b/test/integration_async_helper.rb @@ -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 diff --git a/test/integration_helper.rb b/test/integration_helper.rb index 7525cf10..7cdbe879 100644 --- a/test/integration_helper.rb +++ b/test/integration_helper.rb @@ -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 diff --git a/test/integration_test.rb b/test/integration_test.rb index 22d51634..57c4a6d3 100644 --- a/test/integration_test.rb +++ b/test/integration_test.rb @@ -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