diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 847c7381..4c58cd5e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,29 +11,30 @@ permissions: jobs: test: + name: ${{ matrix.ruby }} (Rack ${{ matrix.rack }}, Puma ${{ matrix.puma }}) permissions: contents: read # to fetch code (actions/checkout) actions: read # to list jobs for workflow run (8398a7/action-slack) - - name: ${{ matrix.ruby }} (Rack ${{ matrix.rack }}, Puma ${{ matrix.puma }}) runs-on: ubuntu-latest timeout-minutes: 15 strategy: fail-fast: false matrix: puma: - - '~> 5' # Due to https://github.com/puma/puma/issues/3000 - rack: - stable + rack: + - '~> 2' # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0' ruby: [2.6, 2.7, '3.0', 3.1, 'jruby-9.3', truffleruby, truffleruby-head] include: - - { ruby: 3.1, rack: stable, puma: latest, allow-failure: true } - - { ruby: 3.1, rack: latest, allow-failure: true } - - { ruby: jruby-head, rack: stable, allow-failure: true } + - { ruby: 3.1, rack: stable, puma: stable, gemfile: gems/rack-v3.rb, allow-failure: true } + - { ruby: 3.1, rack: latest, puma: latest, gemfile: gems/rack-v3.rb, allow-failure: true } + - { ruby: jruby-head, rack: stable, puma: stable, gemfile: gems/rack-v3.rb, allow-failure: true } env: rack: ${{ matrix.rack }} puma: ${{ matrix.puma }} + BUNDLE_GEMFILE: ${{ matrix.gemfile }} + steps: - name: Install dependencies run: | diff --git a/Gemfile b/Gemfile index 6884186d..4868e11a 100644 --- a/Gemfile +++ b/Gemfile @@ -24,7 +24,6 @@ puma_version = { github: 'puma/puma' } if puma_version == 'latest' gem 'puma', puma_version gem 'minitest', '~> 5.0' -gem 'rack-test', github: 'rack/rack-test' gem 'rubocop', '~> 1.32.0', require: false gem 'yard' diff --git a/gems/rack-v3.rb b/gems/rack-v3.rb new file mode 100644 index 00000000..0650c0c4 --- /dev/null +++ b/gems/rack-v3.rb @@ -0,0 +1,4 @@ +eval_gemfile("../Gemfile") + +gem "rackup" +gem "rack-session" diff --git a/rack-protection/Gemfile b/rack-protection/Gemfile index cc444308..520dee07 100644 --- a/rack-protection/Gemfile +++ b/rack-protection/Gemfile @@ -13,5 +13,3 @@ gem 'rack', rack_version gem 'sinatra', path: '..' gemspec - -gem 'rack-test', github: 'rack/rack-test' diff --git a/sinatra-contrib/Gemfile b/sinatra-contrib/Gemfile index f0ae875c..6e26b939 100644 --- a/sinatra-contrib/Gemfile +++ b/sinatra-contrib/Gemfile @@ -6,8 +6,6 @@ gemspec gem 'rack-protection', path: '../rack-protection' gem 'sinatra', path: '..' -gem 'rack-test', github: 'rack/rack-test' - group :development, :test do platform :jruby do gem 'json' @@ -38,6 +36,6 @@ repos = { 'tilt' => 'rtomayko/tilt', 'rack' => 'rack/rack' } %w[tilt rack].each do |lib| dep = (ENV[lib] || 'stable').sub "#{lib}-", '' dep = nil if dep == 'stable' - dep = { github: repos[lib], branch: dep } if dep && dep !~ (/(\d+\.)+\d+/) + dep = { github: repos[lib], branch: dep } if dep && dep !~ (/(\d+\.?)+(\d+)?/) gem lib, dep if dep end diff --git a/sinatra.gemspec b/sinatra.gemspec index 8f9cf599..c74d4e78 100644 --- a/sinatra.gemspec +++ b/sinatra.gemspec @@ -46,7 +46,7 @@ RubyGems 2.0 or newer is required to protect against public gem pushes. You can s.required_ruby_version = '>= 2.6.0' s.add_dependency 'mustermann', '~> 3.0' - s.add_dependency 'rack', '~> 2.2', '>= 2.2.4' + s.add_dependency 'rack', '>= 2.2.4', '< 4' s.add_dependency 'rack-protection', version s.add_dependency 'tilt', '~> 2.0' diff --git a/test/server_test.rb b/test/server_test.rb index efacddb1..c4ae62f7 100644 --- a/test/server_test.rb +++ b/test/server_test.rb @@ -24,7 +24,7 @@ module Rack::Handler end end - register 'mock', 'Rack::Handler::Mock' + register :mock, Mock end class ServerTest < Minitest::Test