From 0ec178823295680ab420a85fbf53c712b0a16768 Mon Sep 17 00:00:00 2001 From: Eric Proulx Date: Thu, 5 Jan 2023 14:01:40 +0100 Subject: [PATCH] Rack < 3 (#2302) * Add rack3.gemfile Update rack-test and limit rack < 3 Update multiple gemfiles * Add CHANGELOG.md Fix #2300 --- .github/workflows/edge.yml | 10 ++++---- CHANGELOG.md | 1 + Gemfile | 2 +- gemfiles/multi_json.gemfile | 2 +- gemfiles/multi_xml.gemfile | 2 +- gemfiles/rack1.gemfile | 2 +- gemfiles/rack2.gemfile | 2 +- gemfiles/rack2_2.gemfile | 2 +- gemfiles/rack3.gemfile | 46 +++++++++++++++++++++++++++++++++++++ gemfiles/rack_edge.gemfile | 2 +- gemfiles/rails_5.gemfile | 2 +- gemfiles/rails_6.gemfile | 2 +- gemfiles/rails_6_1.gemfile | 2 +- gemfiles/rails_7.gemfile | 2 +- gemfiles/rails_edge.gemfile | 2 +- grape.gemspec | 2 +- spec/grape/endpoint_spec.rb | 5 ++-- 17 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 gemfiles/rack3.gemfile diff --git a/.github/workflows/edge.yml b/.github/workflows/edge.yml index 9055f2f594..3089415f56 100644 --- a/.github/workflows/edge.yml +++ b/.github/workflows/edge.yml @@ -1,9 +1,6 @@ --- name: edge -on: - pull_request: - branches: - - "*" +on: pull_request jobs: test: strategy: @@ -14,10 +11,12 @@ jobs: gemfile: 'gemfiles/rails_edge.gemfile' - ruby: 2.7 gemfile: 'gemfiles/rack_edge.gemfile' + - ruby: 2.7 + gemfile: 'gemfiles/rack3.gemfile' - ruby: "ruby-head" - ruby: "truffleruby-head" - ruby: "jruby-head" - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest continue-on-error: true env: BUNDLE_GEMFILE: ${{ matrix.gemfile }} @@ -30,6 +29,7 @@ jobs: with: ruby-version: ${{ matrix.ruby }} bundler-cache: true + rubygems: latest - name: Run tests run: bundle exec rake spec diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d8ca05b07..172c84328b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * [#2288](https://github.com/ruby-grape/grape/pull/2288): Droped support for Ruby 2.5 - [@ericproulx](https://github.com/ericproulx). * [#2288](https://github.com/ruby-grape/grape/pull/2288): Updated rubocop to 1.41.0 - [@ericproulx](https://github.com/ericproulx). * [#2296](https://github.com/ruby-grape/grape/pull/2296): Fix cops and enables some - [@ericproulx](https://github.com/ericproulx). +* [#2302](https://github.com/ruby-grape/grape/pull/2302): Rack < 3 and update rack-test - [@ericproulx](https://github.com/ericproulx). * Your contribution here. #### Fixes diff --git a/Gemfile b/Gemfile index 4adf9b7e3b..7e7aef6a36 100644 --- a/Gemfile +++ b/Gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/multi_json.gemfile b/gemfiles/multi_json.gemfile index 11941e7ec9..f306bc020a 100644 --- a/gemfiles/multi_json.gemfile +++ b/gemfiles/multi_json.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/multi_xml.gemfile b/gemfiles/multi_xml.gemfile index 059f944e00..f43c7b8c27 100644 --- a/gemfiles/multi_xml.gemfile +++ b/gemfiles/multi_xml.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rack1.gemfile b/gemfiles/rack1.gemfile index f05604345e..647416e596 100644 --- a/gemfiles/rack1.gemfile +++ b/gemfiles/rack1.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rack2.gemfile b/gemfiles/rack2.gemfile index d364e40844..5d30e7930e 100644 --- a/gemfiles/rack2.gemfile +++ b/gemfiles/rack2.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rack2_2.gemfile b/gemfiles/rack2_2.gemfile index cf4f1081ca..31ef181af2 100644 --- a/gemfiles/rack2_2.gemfile +++ b/gemfiles/rack2_2.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rack3.gemfile b/gemfiles/rack3.gemfile new file mode 100644 index 0000000000..b3ff65fc23 --- /dev/null +++ b/gemfiles/rack3.gemfile @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +# This file was generated by Appraisal + +source 'https://rubygems.org' + +gem 'rack', '~> 3' + +group :development, :test do + gem 'bundler' + gem 'hashie' + gem 'rake' + gem 'rubocop', '1.41.0' + gem 'rubocop-ast' + gem 'rubocop-performance', require: false + gem 'rubocop-rspec', require: false +end + +group :development do + gem 'appraisal' + gem 'benchmark-ips' + gem 'benchmark-memory' + gem 'guard' + gem 'guard-rspec' + gem 'guard-rubocop' +end + +group :test do + gem 'cookiejar' + gem 'grape-entity', '~> 0.6' + gem 'maruku' + gem 'mime-types' + gem 'rack-jsonp', require: 'rack/jsonp' + gem 'rack-test' + gem 'rspec', '~> 3.11.0' + gem 'ruby-grape-danger', '~> 0.2.0', require: false + gem 'simplecov', '~> 0.21.2' + gem 'simplecov-lcov', '~> 0.8.0' + gem 'test-prof', require: false +end + +platforms :jruby do + gem 'racc' +end + +gemspec path: '../' diff --git a/gemfiles/rack_edge.gemfile b/gemfiles/rack_edge.gemfile index a00083043a..137848ded0 100644 --- a/gemfiles/rack_edge.gemfile +++ b/gemfiles/rack_edge.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rails_5.gemfile b/gemfiles/rails_5.gemfile index 8148083aa2..75cc1ebe90 100644 --- a/gemfiles/rails_5.gemfile +++ b/gemfiles/rails_5.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rails_6.gemfile b/gemfiles/rails_6.gemfile index 7b088fcf77..a07b203b50 100644 --- a/gemfiles/rails_6.gemfile +++ b/gemfiles/rails_6.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rails_6_1.gemfile b/gemfiles/rails_6_1.gemfile index 7962e1b593..2f62e71306 100644 --- a/gemfiles/rails_6_1.gemfile +++ b/gemfiles/rails_6_1.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rails_7.gemfile b/gemfiles/rails_7.gemfile index 468d498d2f..1c3e639f48 100644 --- a/gemfiles/rails_7.gemfile +++ b/gemfiles/rails_7.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/gemfiles/rails_edge.gemfile b/gemfiles/rails_edge.gemfile index aca8be74cd..50d8260d0b 100644 --- a/gemfiles/rails_edge.gemfile +++ b/gemfiles/rails_edge.gemfile @@ -31,7 +31,7 @@ group :test do gem 'maruku' gem 'mime-types' gem 'rack-jsonp', require: 'rack/jsonp' - gem 'rack-test', '~> 1.1.0' + gem 'rack-test' gem 'rspec', '~> 3.11.0' gem 'ruby-grape-danger', '~> 0.2.0', require: false gem 'simplecov', '~> 0.21.2' diff --git a/grape.gemspec b/grape.gemspec index b0e3a51b6b..a2b312a755 100644 --- a/grape.gemspec +++ b/grape.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'builder' s.add_runtime_dependency 'dry-types', '>= 1.1' s.add_runtime_dependency 'mustermann-grape', '~> 1.0.0' - s.add_runtime_dependency 'rack', '>= 1.3.0' + s.add_runtime_dependency 'rack', '< 3' s.add_runtime_dependency 'rack-accept' s.files = %w[CHANGELOG.md CONTRIBUTING.md README.md grape.png UPGRADING.md LICENSE] diff --git a/spec/grape/endpoint_spec.rb b/spec/grape/endpoint_spec.rb index 158aa6c977..5b563434c7 100644 --- a/spec/grape/endpoint_spec.rb +++ b/spec/grape/endpoint_spec.rb @@ -140,7 +140,8 @@ def app get '/headers' expect(JSON.parse(last_response.body)).to eq( 'Host' => 'example.org', - 'Cookie' => '' + 'Cookie' => '', + 'Version' => 'HTTP/1.0' ) end @@ -432,7 +433,7 @@ def app end post '/upload', { file: '' }, 'CONTENT_TYPE' => 'multipart/form-data; boundary=foobar' expect(last_response.status).to eq(400) - expect(last_response.body).to eq('empty message body supplied with multipart/form-data; boundary=foobar content-type') + expect(last_response.body).to eq('file is invalid') end end