thin
thin copied to clipboard
Test failure with sinatra for thin
Arch has updated thin to https://github.com/macournoyer/thin/commit/dbf793af9b98e31c65068aa5dbcc64b4c2ae7565. This seems to have introduced a test failure in sinatra 4.11:
starting
/usr/lib/ruby/gems/3.4.0/gems/thin-1.8.2/lib/thin/rackup/handler.rb:14:in 'Thin::Rackup::Handler.run': uninitialized constant Thin::Server (NameError)
server = ::Thin::Server.new(*args)
^^^^^^^^
Did you mean? TCPServer
from /build/ruby-sinatra/src/sinatra-4.1.1/lib/sinatra/base.rb:1694:in 'Sinatra::Base.start_server'
from /build/ruby-sinatra/src/sinatra-4.1.1/lib/sinatra/base.rb:1633:in 'Sinatra::Base.run!'
from /build/ruby-sinatra/src/sinatra-4.1.1/lib/sinatra/main.rb:47:in 'block in <module:Sinatra>'
/build/ruby-sinatra/src/sinatra-4.1.1/sinatra-contrib/tmp_install/usr/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.1.1/lib/sinatra/runner.rb:120:in 'block in Sinatra::Runner#ping': timeout starting server with command 'APP_ENV=development exec "/usr/bin/ruby" -w -I "/build/ruby-sinatra/src/sinatra-4.1.1/lib" "/build/ruby-sinatra/src/sinatra-4.1.1/test/integration/app.rb" -s thin -o 127.0.0.1 -p 5066 -e development 2>&1' (RuntimeError)
from <internal:kernel>:168:in 'Kernel#loop'
from /build/ruby-sinatra/src/sinatra-4.1.1/sinatra-contrib/tmp_install/usr/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.1.1/lib/sinatra/runner.rb:115:in 'Sinatra::Runner#ping'
from /build/ruby-sinatra/src/sinatra-4.1.1/sinatra-contrib/tmp_install/usr/lib/ruby/gems/3.4.0/gems/sinatra-contrib-4.1.1/lib/sinatra/runner.rb:60:in 'Sinatra::Runner#run'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_helper.rb:50:in 'IntegrationHelper::BaseServer#run'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_helper.rb:25:in 'IntegrationHelper::BaseServer.run'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_helper.rb:143:in 'block in IntegrationHelper.extend_object'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_helper.rb:142:in 'Array#each'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_helper.rb:142:in 'Enumerable#each_with_index'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_helper.rb:142:in 'IntegrationHelper.extend_object'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_test.rb:9:in 'Kernel#extend'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_test.rb:9:in '<class:IntegrationTest>'
from /build/ruby-sinatra/src/sinatra-4.1.1/test/integration_test.rb:8:in '<top (required)>'
from <internal:/usr/lib/ruby/3.4.0/rubygems/core_ext/kernel_require.rb>:136:in 'Kernel#require'
from <internal:/usr/lib/ruby/3.4.0/rubygems/core_ext/kernel_require.rb>:136:in 'Kernel#require'
from -e:1:in '<main>'
rake aborted!
Command failed with status (1): [/usr/bin/ruby -Ilib:test:. -w -e 'require "minitest/autorun"; require "test/rdoc_test.rb"; require "test/helpers_test.rb"; require "test/server_test.rb"; require "test/mapped_error_test.rb"; require "test/filter_test.rb"; require "test/integration_start_test.rb"; require "test/scss_test.rb"; require "test/host_authorization_test.rb"; require "test/rabl_test.rb"; require "test/base_test.rb"; require "test/builder_test.rb"; require "test/route_added_hook_test.rb"; require "test/haml_test.rb"; require "test/routing_test.rb"; require "test/middleware_test.rb"; require "test/compile_test.rb"; require "test/nokogiri_test.rb"; require "test/indifferent_hash_test.rb"; require "test/rack_test.rb"; require "test/readme_test.rb"; require "test/liquid_test.rb"; require "test/settings_test.rb"; require "test/sass_test.rb"; require "test/request_test.rb"; require "test/integration_test.rb"; require "test/markdown_test.rb"; require "test/delegator_test.rb"; require "test/result_test.rb"; require "test/erb_test.rb"; require "test/extensions_test.rb"; require "test/encoding_test.rb"; require "test/slim_test.rb"; require "test/sinatra_test.rb"; require "test/integration_async_test.rb"; require "test/response_test.rb"; require "test/asciidoctor_test.rb"; require "test/test_helper.rb"; require "test/yajl_test.rb"; require "test/templates_test.rb"; require "test/static_test.rb"; require "test/markaby_test.rb"; require "test/streaming_test.rb"' -- ]
Downstream issue report https://gitlab.archlinux.org/archlinux/packaging/packages/ruby-sinatra/-/issues/4
Adding the requires removed from lib/rack/handler/thin.rb to lib/thin/rackup/handler.rb as below and sinatra passes the check:
--- a/lib/thin/rackup/handler.rb
+++ b/lib/thin/rackup/handler.rb
@@ -1,5 +1,10 @@
# frozen_string_literal: true
+require "thin"
+require "thin/server"
+require "thin/logging"
+require "thin/backends/tcp_server"
+
module Thin
module Rackup
class Handler
@ioquatix should lib/thin/rackup/handler.rb need any requires and if so is lib/thin/rackup/handler.rb the right location for them? I also noticed there does not seem to be any spec coverage of handler.rb?