Skip to content

Commit ab9c11c

Browse files
authored
Merge pull request #319 from chadlwilson/rack-test-matrix
[test] Introduce ability to test with different Rack versions to the default/bundled Rack
2 parents a21be30 + 09dbc70 commit ab9c11c

24 files changed

+112
-1587
lines changed

.github/workflows/maven.yml

Lines changed: 19 additions & 6 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.4.13.0', '10.0.2.0' ]
2223
java_version: [ '8', '11', '17', '21' ]
24+
rack_version: [ '~> 2.2' ]
2325
exclude:
2426
- jruby_version: '10.0.2.0'
2527
java_version: '8' # JRuby 10 requires Java 21
@@ -41,31 +43,42 @@ jobs:
4143

4244
- name: Build with Maven
4345
run: ./mvnw -B install -Djruby.version=${{ matrix.jruby_version }}
46+
env:
47+
RACK_VERSION: ${{ matrix.rack_version }}
4448

4549
# Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
4650
- name: Update dependency graph
4751
uses: advanced-security/maven-dependency-submission-action@b275d12641ac2d2108b2cbb7598b154ad2f2cee8 # v5.0.0
48-
if: github.ref == 'refs/heads/master' && matrix.java_version == env.DEFAULT_JAVA_VERSION && matrix.jruby_version == env.DEFAULT_JRUBY_VERSION
52+
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
4953

5054
appraisals:
5155
needs: build
52-
name: ${{ matrix.appraisal }} appraisal on ${{ matrix.jruby_version }} / Java ${{ matrix.java_version }}
56+
name: ${{ matrix.appraisal }} on ${{ matrix.jruby_version }} / Java ${{ matrix.java_version }}
5357
runs-on: ubuntu-latest
5458

5559
strategy:
5660
matrix:
61+
appraisal: [
62+
'rails50_rack22',
63+
'rails52_rack22',
64+
'rails60_rack22',
65+
'rails61_rack22',
66+
'rails70_rack22',
67+
'rails71_rack22',
68+
'rails72_rack22',
69+
'rails80_rack22',
70+
]
5771
jruby_version: [ '9.4.13.0', '10.0.2.0' ]
5872
java_version: [ '8', '11', '17', '21' ]
59-
appraisal: [ 'rails50', 'rails52', 'rails60', 'rails61', 'rails70', 'rails71', 'rails72', 'rails80' ]
6073
exclude:
61-
- jruby_version: '9.4.13.0'
62-
appraisal: 'rails80' # Requires Ruby 3.4 compatibility, which JRuby 9.4 does not support
6374
- jruby_version: '10.0.2.0'
6475
java_version: '8' # JRuby 10 requires Java 21
6576
- jruby_version: '10.0.2.0'
6677
java_version: '11' # JRuby 10 requires Java 21
6778
- jruby_version: '10.0.2.0'
6879
java_version: '17' # JRuby 10 requires Java 21
80+
- appraisal: 'rails80_rack22'
81+
jruby_version: '9.4.13.0' # Rails 8 requires Ruby 3.4 compatibility, which JRuby 9.4 does not support
6982
fail-fast: false
7083

7184
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: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,24 @@
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
1+
version_spec = ->(prefix, desc) { "~> #{desc.split(prefix).last.insert(1, ".")}.0" }
82

9-
appraise "rails60" do
10-
gem "rails", "~> 6.0.0"
11-
end
12-
13-
appraise "rails61" do
14-
gem "rails", "~> 6.1.0"
15-
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+
"rails80" => %w[rack22]
14+
}.each do |rails_desc, rack_descs|
15+
rack_descs.each do |rack_desc|
1616

17-
appraise "rails70" do
18-
gem "rails", "~> 7.0.0"
17+
appraise "#{rails_desc}_#{rack_desc}" do
18+
group :default do
19+
gem "rack", version_spec.call("rack", rack_desc)
20+
gem "rails", version_spec.call("rails", rails_desc)
21+
end
22+
end
23+
end
1924
end
20-
21-
appraise "rails71" do
22-
gem "rails", "~> 7.1.0"
23-
end
24-
25-
appraise "rails72" do
26-
gem "rails", "~> 7.2.0"
27-
end
28-
29-
appraise "rails80" do
30-
gem "rails", "~> 8.0.0"
31-
end

gemfiles/rails50.gemfile.lock

Lines changed: 0 additions & 151 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)