Skip to content

Commit 63e3f6d

Browse files
committed
[test] Introduce ability to test with different Rack versions to the default/bundled Rack
Makes it easier to start adding Rack 3.x compatibility tests with a smaller PR and fewer differences across branches. (cherry picked from commit 09dbc70)
1 parent 404758f commit 63e3f6d

20 files changed

+96
-1380
lines changed

.github/workflows/maven.yml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@ env:
1010
# Default versions for canonical release build
1111
DEFAULT_JAVA_VERSION: '8'
1212
DEFAULT_JRUBY_VERSION: '9.4.13.0' # Should match pom.xml <jruby.version> property (AND a version inside the test matrix)
13+
DEFAULT_RACK_VERSION: '~> 2.2' # Should match Gemfile (AND a version inside the test matrix)
1314

1415
jobs:
1516
build:
16-
name: JRuby ${{ matrix.jruby_version }} / Java ${{ matrix.java_version }}
17+
name: Rack ${{ matrix.rack_version }} on JRuby ${{ matrix.jruby_version }} / Java ${{ matrix.java_version }}
1718
runs-on: ubuntu-latest
1819

1920
strategy:
2021
matrix:
2122
jruby_version: [ '9.3.15.0', '9.4.13.0' ]
2223
java_version: [ '8', '11', '17', '21' ]
24+
rack_version: [ '~> 2.2' ]
2325
fail-fast: false
2426

2527
steps:
@@ -34,29 +36,39 @@ jobs:
3436

3537
- name: Build with Maven
3638
run: ./mvnw -B install -Djruby.version=${{ matrix.jruby_version }}
39+
env:
40+
RACK_VERSION: ${{ matrix.rack_version }}
3741

3842
# Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
3943
- name: Update dependency graph
4044
uses: advanced-security/maven-dependency-submission-action@b275d12641ac2d2108b2cbb7598b154ad2f2cee8 # v5.0.0
41-
if: github.ref == 'refs/heads/master' && matrix.java_version == env.DEFAULT_JAVA_VERSION && matrix.jruby_version == env.DEFAULT_JRUBY_VERSION
45+
if: github.ref == 'refs/heads/master' && matrix.java_version == env.DEFAULT_JAVA_VERSION && matrix.jruby_version == env.DEFAULT_JRUBY_VERSION && matrix.rack_version == env.DEFAULT_RACK_VERSION
4246

4347
appraisals:
4448
needs: build
45-
name: ${{ matrix.appraisal }} appraisal on ${{ matrix.jruby_version }} / Java ${{ matrix.java_version }}
49+
name: ${{ matrix.appraisal }} on ${{ matrix.jruby_version }} / Java ${{ matrix.java_version }}
4650
runs-on: ubuntu-latest
4751

4852
strategy:
4953
matrix:
54+
appraisal: [
55+
'rails50_rack22',
56+
'rails52_rack22',
57+
'rails60_rack22',
58+
'rails61_rack22',
59+
'rails70_rack22',
60+
'rails71_rack22',
61+
'rails72_rack22',
62+
]
5063
jruby_version: [ '9.3.15.0', '9.4.13.0' ]
5164
java_version: [ '8', '11', '17', '21' ]
52-
appraisal: [ 'rails50', 'rails52', 'rails60', 'rails61', 'rails70', 'rails71', 'rails72' ]
5365
exclude:
54-
- jruby_version: '9.3.15.0'
55-
appraisal: 'rails70' # Requires Ruby 2.7 compatibility, which JRuby 9.3 does not support
56-
- jruby_version: '9.3.15.0'
57-
appraisal: 'rails71' # Requires Ruby 2.7 compatibility, which JRuby 9.3 does not support
58-
- jruby_version: '9.3.15.0'
59-
appraisal: 'rails72' # Requires Ruby 3.1 compatibility, which JRuby 9.3 does not support
66+
- appraisal: 'rails70_rack22' # Requires Ruby 2.7 compatibility, which JRuby 9.3 does not support
67+
jruby_version: '9.3.15.0'
68+
- appraisal: 'rails71_rack22' # Requires Ruby 2.7 compatibility, which JRuby 9.3 does not support
69+
jruby_version: '9.3.15.0'
70+
- appraisal: 'rails72_rack22' # Requires Ruby 3.1 compatibility, which JRuby 9.3 does not support
71+
jruby_version: '9.3.15.0'
6072
fail-fast: false
6173

6274
env:

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ examples/*/nbproject
1212
nbproject
1313
.idea/
1414
.rvmrc
15+
gemfiles/*.lock

Appraisals

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
1-
appraise "rails50" do
2-
gem "rails", "~> 5.0.0"
3-
end
4-
5-
appraise "rails52" do
6-
gem "rails", "~> 5.2.0"
7-
end
8-
9-
appraise "rails60" do
10-
gem "rails", "~> 6.0.0"
11-
end
1+
version_spec = ->(prefix, desc) { "~> #{desc.split(prefix).last.insert(1, ".")}.0" }
122

13-
appraise "rails61" do
14-
gem "rails", "~> 6.1.0"
15-
end
16-
17-
appraise "rails70" do
18-
gem "rails", "~> 7.0.0"
19-
end
20-
21-
appraise "rails71" do
22-
gem "rails", "~> 7.1.0"
23-
end
3+
# Rails version -> rack versions in format
4+
# rails#{MAJOR}#{MINOR} => %w[ rack#{MAJOR}#{MINOR} ]
5+
{
6+
"rails50" => %w[rack22],
7+
"rails52" => %w[rack22],
8+
"rails60" => %w[rack22],
9+
"rails61" => %w[rack22],
10+
"rails70" => %w[rack22],
11+
"rails71" => %w[rack22],
12+
"rails72" => %w[rack22]
13+
}.each do |rails_desc, rack_descs|
14+
rack_descs.each do |rack_desc|
2415

25-
appraise "rails72" do
26-
gem "rails", "~> 7.2.0"
16+
appraise "#{rails_desc}_#{rack_desc}" do
17+
group :default do
18+
gem "rack", version_spec.call("rack", rack_desc)
19+
gem "rails", version_spec.call("rails", rails_desc)
20+
end
21+
end
22+
end
2723
end

gemfiles/rails50.gemfile.lock

Lines changed: 0 additions & 154 deletions
This file was deleted.

gemfiles/rails50.gemfile renamed to gemfiles/rails50_rack22.gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ source "https://rubygems.org"
44

55
gem "rake", "~> 13.3", group: :test, require: nil
66
gem "rspec", group: :test
7-
gem "rails", "~> 5.0.0"
87

98
group :default do
10-
gem "rack", "~> 2.2"
9+
gem "rack", "~> 2.2.0"
10+
gem "rails", "~> 5.0.0"
1111
end
1212

1313
group :development do

0 commit comments

Comments
 (0)