Skip to content

Commit b2cfd77

Browse files
committed
CI: Reduce duplication my having extra gemfiles
1 parent 413770b commit b2cfd77

File tree

7 files changed

+68
-95
lines changed

7 files changed

+68
-95
lines changed

.github/workflows/main.yml

Lines changed: 19 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -35,94 +35,37 @@ jobs:
3535
- "3.4"
3636
- ruby-head
3737
- jruby-9.4
38+
gemfile: [Gemfile]
3839
task:
3940
- internal_investigation
4041
- spec
41-
name: "Ruby ${{ matrix.ruby }}: ${{ matrix.task }}"
42-
steps:
43-
- uses: actions/checkout@v5
44-
- uses: ruby/setup-ruby@v1
45-
with:
46-
ruby-version: "${{ matrix.ruby }}"
47-
bundler-cache: true
48-
- run: NO_COVERAGE=true bundle exec rake ${{ matrix.task }}
42+
include:
43+
- {ruby: "3.4", gemfile: "gemfiles/oldest_rubocop.rb", task: spec}
44+
- {ruby: "3.4", gemfile: "gemfiles/latest_rubocop.rb", task: internal_investigation}
45+
- {ruby: "3.4", gemfile: "gemfiles/latest_rubocop.rb", task: spec}
46+
- {ruby: "3.4", gemfile: "gemfiles/latest_rspec_4.rb", task: spec}
47+
name: >
48+
${{ matrix.gemfile == 'Gemfile' &&
49+
"Ruby ${{ matrix.ruby }}: ${{ matrix.task }}" ||
50+
"${{ matrix.task }} with ${{ matrix.gemfile }}"
51+
}}
4952
50-
coverage:
51-
runs-on: ubuntu-latest
52-
name: "Test coverage"
53+
env:
54+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
5355
steps:
5456
- uses: actions/checkout@v5
5557
- uses: ruby/setup-ruby@v1
5658
with:
57-
ruby-version: "3.4"
58-
bundler-cache: true
59-
- run: bundle exec rake spec
60-
61-
edge-rubocop:
62-
runs-on: ubuntu-latest
63-
strategy:
64-
matrix:
65-
task:
66-
- internal_investigation
67-
- spec
68-
name: "Edge RuboCop: ${{ matrix.task }}"
69-
steps:
70-
- uses: actions/checkout@v5
71-
- name: Use latest RuboCop from `master`
72-
run: |
73-
echo "gem 'rubocop', github: 'rubocop/rubocop'" > Gemfile.local
74-
cat Gemfile.local
75-
- uses: ruby/setup-ruby@v1
76-
with:
77-
ruby-version: "3.4"
78-
bundler-cache: true
79-
- name: Show RuboCop version
80-
run: grep '^ rubocop' Gemfile.lock | sort
81-
- run: NO_COVERAGE=true bundle exec rake ${{ matrix.task }}
82-
83-
oldest-rubocop:
84-
runs-on: ubuntu-latest
85-
strategy:
86-
matrix:
87-
task:
88-
- spec
89-
name: "Oldest RuboCop: ${{ matrix.task }}"
90-
steps:
91-
- uses: actions/checkout@v5
92-
- name: Use oldest RuboCop allowed by gemspec
93-
run: |
94-
sed -nr "s/ *spec.add_dependency 'rubocop'.*'>= ([0-9\.]+)'/gem 'rubocop', '= \1'/p" \
95-
rubocop-rspec.gemspec > Gemfile.local
96-
cat Gemfile.local
97-
- uses: ruby/setup-ruby@v1
98-
with:
99-
ruby-version: "3.4"
59+
ruby-version: "${{ matrix.ruby }}"
10060
bundler-cache: true
61+
- name: Show Gemfile for debugging
62+
if: ${{ matrix.gemfile }} != 'Gemfile'
63+
run: cat $BUNDLE_GEMFILE
10164
- name: Show RuboCop version
102-
run: grep '^ rubocop' Gemfile.lock | sort
65+
if: ${{ matrix.gemfile }} != 'Gemfile'
66+
run: grep '^ rubocop' $BUNDLE_GEMFILE.lock | sort
10367
- run: NO_COVERAGE=true bundle exec rake ${{ matrix.task }}
10468

105-
rspec4:
106-
runs-on: ubuntu-latest
107-
name: RSpec 4
108-
steps:
109-
- uses: actions/checkout@v5
110-
- name: Use latest RSpec 4 from `4-0-dev` branch
111-
run: |
112-
sed -e '/rspec/d' -i Gemfile
113-
cat << EOF > Gemfile.local
114-
gem 'rspec', github: 'rspec/rspec', branch: '4-0-dev'
115-
gem 'rspec-core', github: 'rspec/rspec', branch: '4-0-dev'
116-
gem 'rspec-expectations', github: 'rspec/rspec', branch: '4-0-dev'
117-
gem 'rspec-mocks', github: 'rspec/rspec', branch: '4-0-dev'
118-
gem 'rspec-support', github: 'rspec/rspec', branch: '4-0-dev'
119-
EOF
120-
- uses: ruby/setup-ruby@v1
121-
with:
122-
ruby-version: "3.4"
123-
bundler-cache: true
124-
- run: NO_COVERAGE=true bundle exec rake spec
125-
12669
prism:
12770
runs-on: ubuntu-latest
12871
name: Prism

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ doc
77

88
# bundler
99
.bundle
10-
Gemfile.lock
11-
Gemfile.local
10+
/Gemfile.lock
11+
/Gemfile.local
12+
/gemfiles/*.lock
1213

1314
# jeweler generated
1415
pkg

Gemfile

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,6 @@
11
# frozen_string_literal: true
22

3-
source 'https://rubygems.org'
4-
5-
gemspec
6-
7-
gem 'bump'
8-
gem 'rack'
9-
gem 'rake'
10-
gem 'rspec', '~> 3.11'
11-
gem 'rubocop-performance', '~> 1.24'
12-
gem 'rubocop-rake', '~> 0.7'
13-
gem 'simplecov', '>= 0.19'
14-
gem 'yard'
15-
16-
# FIXME: Remove when the next prism version is released.
17-
if RUBY_VERSION < '3.0' || RUBY_ENGINE == 'jruby'
18-
gem 'prism', '!= 1.5.0', '!= 1.5.1'
19-
end
3+
eval_gemfile('gemfiles/common.rb')
204

215
local_gemfile = 'Gemfile.local'
226
eval_gemfile(local_gemfile) if File.exist?(local_gemfile)

gemfiles/common.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# frozen_string_literal: true
2+
3+
source 'https://rubygems.org'
4+
5+
gemspec path: '..'
6+
7+
gem 'bump'
8+
gem 'rack'
9+
gem 'rake'
10+
gem 'rspec', '~> 3.11'
11+
gem 'rubocop-performance', '~> 1.24'
12+
gem 'rubocop-rake', '~> 0.7'
13+
gem 'simplecov', '>= 0.19'
14+
gem 'yard'
15+
16+
# FIXME: Remove when the next prism version is released.
17+
if RUBY_VERSION < '3.0' || RUBY_ENGINE == 'jruby'
18+
gem 'prism', '!= 1.5.0', '!= 1.5.1'
19+
end

gemfiles/latest_rspec_4.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
# Use latest RSpec 4 from `4-0-dev` branch
4+
lines = File.readlines('gemfiles/common.rb')
5+
lines.delete_if { |line| line.include?('rspec') }
6+
eval_gemfile('common.rb', lines.join)
7+
8+
gem 'rspec', github: 'rspec/rspec', branch: '4-0-dev'
9+
gem 'rspec-core', github: 'rspec/rspec', branch: '4-0-dev'
10+
gem 'rspec-expectations', github: 'rspec/rspec', branch: '4-0-dev'
11+
gem 'rspec-mocks', github: 'rspec/rspec', branch: '4-0-dev'
12+
gem 'rspec-support', github: 'rspec/rspec', branch: '4-0-dev'

gemfiles/latest_rubocop.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# frozen_string_literal: true
2+
3+
eval_gemfile('common.rb')
4+
5+
# Use latest RuboCop from `master`
6+
gem 'rubocop', github: 'rubocop/rubocop'

gemfiles/oldest_rubocop.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# frozen_string_literal: true
2+
3+
eval_gemfile('common.rb')
4+
5+
# Use oldest RuboCop allowed by gemspec
6+
gemspec = File.read('rubocop-rspec.gemspec')
7+
version = gemspec[/ *spec.add_dependency 'rubocop'.*'>= ([0-9.]+)'/, 1]
8+
gem 'rubocop', version

0 commit comments

Comments
 (0)