Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 13 additions & 75 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,94 +35,32 @@ jobs:
- "3.4"
- ruby-head
- jruby-9.4
gemfile: [Gemfile]
task:
- internal_investigation
- spec
include:
- {ruby: "3.4", gemfile: "gemfiles/oldest_rubocop.rb", task: spec}
- {ruby: "3.4", gemfile: "gemfiles/latest_rubocop.rb", task: internal_investigation}
- {ruby: "3.4", gemfile: "gemfiles/latest_rubocop.rb", task: spec}
- {ruby: "3.4", gemfile: "gemfiles/latest_rspec_4.rb", task: spec}
name: "Ruby ${{ matrix.ruby }}: ${{ matrix.task }}"
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
steps:
- uses: actions/checkout@v5
- uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby }}"
bundler-cache: true
- run: NO_COVERAGE=true bundle exec rake ${{ matrix.task }}

coverage:
runs-on: ubuntu-latest
name: "Test coverage"
steps:
- uses: actions/checkout@v5
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- run: bundle exec rake spec

edge-rubocop:
runs-on: ubuntu-latest
strategy:
matrix:
task:
- internal_investigation
- spec
name: "Edge RuboCop: ${{ matrix.task }}"
steps:
- uses: actions/checkout@v5
- name: Use latest RuboCop from `master`
run: |
echo "gem 'rubocop', github: 'rubocop/rubocop'" > Gemfile.local
cat Gemfile.local
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- name: Show Gemfile for debugging
if: ${{ matrix.gemfile }} != Gemfile
run: cat $BUNDLE_GEMFILE
- name: Show RuboCop version
run: grep '^ rubocop' Gemfile.lock | sort
if: ${{ matrix.gemfile }} != Gemfile
run: grep '^ rubocop' $BUNDLE_GEMFILE.lock | sort
- run: NO_COVERAGE=true bundle exec rake ${{ matrix.task }}

oldest-rubocop:
runs-on: ubuntu-latest
strategy:
matrix:
task:
- spec
name: "Oldest RuboCop: ${{ matrix.task }}"
steps:
- uses: actions/checkout@v5
- name: Use oldest RuboCop allowed by gemspec
run: |
sed -nr "s/ *spec.add_dependency 'rubocop'.*'>= ([0-9\.]+)'/gem 'rubocop', '= \1'/p" \
rubocop-rspec.gemspec > Gemfile.local
cat Gemfile.local
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- name: Show RuboCop version
run: grep '^ rubocop' Gemfile.lock | sort
- run: NO_COVERAGE=true bundle exec rake ${{ matrix.task }}

rspec4:
runs-on: ubuntu-latest
name: RSpec 4
steps:
- uses: actions/checkout@v5
- name: Use latest RSpec 4 from `4-0-dev` branch
run: |
sed -e '/rspec/d' -i Gemfile
cat << EOF > Gemfile.local
gem 'rspec', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-core', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-expectations', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-mocks', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-support', github: 'rspec/rspec', branch: '4-0-dev'
EOF
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- run: NO_COVERAGE=true bundle exec rake spec

prism:
runs-on: ubuntu-latest
name: Prism
Expand Down
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ doc

# bundler
.bundle
Gemfile.lock
Gemfile.local
/Gemfile.lock
/Gemfile.local
/gemfiles/*.lock

# jeweler generated
pkg
Expand Down
18 changes: 1 addition & 17 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,6 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec

gem 'bump'
gem 'rack'
gem 'rake'
gem 'rspec', '~> 3.11'
gem 'rubocop-performance', '~> 1.24'
gem 'rubocop-rake', '~> 0.7'
gem 'simplecov', '>= 0.19'
gem 'yard'

# FIXME: Remove when the next prism version is released.
if RUBY_VERSION < '3.0' || RUBY_ENGINE == 'jruby'
gem 'prism', '!= 1.5.0', '!= 1.5.1'
end
eval_gemfile('gemfiles/common.rb')

local_gemfile = 'Gemfile.local'
eval_gemfile(local_gemfile) if File.exist?(local_gemfile)
19 changes: 19 additions & 0 deletions gemfiles/common.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec path: '..'

gem 'bump'
gem 'rack'
gem 'rake'
gem 'rspec', '~> 3.11'
gem 'rubocop-performance', '~> 1.24'
gem 'rubocop-rake', '~> 0.7'
gem 'simplecov', '>= 0.19'
gem 'yard'

# FIXME: Remove when the next prism version is released.
if RUBY_VERSION < '3.0' || RUBY_ENGINE == 'jruby'
gem 'prism', '!= 1.5.0', '!= 1.5.1'
end
12 changes: 12 additions & 0 deletions gemfiles/latest_rspec_4.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# frozen_string_literal: true

# Use latest RSpec 4 from `4-0-dev` branch
lines = File.readlines('gemfiles/common.rb')
lines.delete_if { |line| line.include?('rspec') }
eval_gemfile('common.rb', lines.join)

gem 'rspec', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-core', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-expectations', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-mocks', github: 'rspec/rspec', branch: '4-0-dev'
gem 'rspec-support', github: 'rspec/rspec', branch: '4-0-dev'
6 changes: 6 additions & 0 deletions gemfiles/latest_rubocop.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

eval_gemfile('common.rb')

# Use latest RuboCop from `master`
gem 'rubocop', github: 'rubocop/rubocop'
8 changes: 8 additions & 0 deletions gemfiles/oldest_rubocop.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# frozen_string_literal: true

eval_gemfile('common.rb')

# Use oldest RuboCop allowed by gemspec
gemspec = File.read('rubocop-rspec.gemspec')
version = gemspec[/ *spec.add_dependency 'rubocop'.*'>= ([0-9.]+)'/, 1]
gem 'rubocop', version