Skip to content

Commit 70bceb6

Browse files
authored
Bump requirements / minimum version (#596)
* Update support range for direct dependencies * Amend rakefile to permit just running unit tests * Remove all traces to conditionals based on rails 6.0 or lower - rails 6.1 is the minim um now * Dev dep update for rails too * Initial interim update for rubocop gems * Further update of all rubocop gems pending core rubocop update * Add dev dependency cop config * Fix up super brackets call * Bump minimum ruby to 3.2 and bump minimum runtime versions of cucumber and capybara * Updated appraisals files for gem install commands on legacy rails installs * Attribution * Add changelog * FIx rubocop anonymous forwarder * Update test matrix and checkout version
1 parent 86a7bac commit 70bceb6

File tree

17 files changed

+63
-54
lines changed

17 files changed

+63
-54
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,18 @@ jobs:
2323
# - rails versions if their patch release is within 6 months of the Ruby EOL date
2424
# - No version of the current rails major
2525
#
26-
# 3.1 -> EOL Mar '25 -> Only test Rails versions initially released before Sep '25
2726
# 3.2 -> EOL Mar '26 -> Only test Rails versions initially released before Sep '26
2827
include:
2928
- { ruby: '3.4', gemfile: 'rails_7_2' }
3029
- { ruby: '3.4', gemfile: 'rails_8_0' }
3130
# Supported rubies will test all permissible supported rails versions
32-
ruby: ['3.1', '3.2', '3.3']
31+
ruby: ['3.2', '3.3']
3332
gemfile: ['rails_6_1', 'rails_7_0', 'rails_7_1', 'rails_7_2', 'rails_8_0']
3433
exclude:
3534
# Ruby 3.1+ has issues with Rails 6.1 https://github.com/rails/rails/issues/46883#issuecomment-1371325906
3635
# It (Rails 6.1.x), has been marked as a won't fix and as such it's likely this will need to just be excluded until out of support window
3736
# Ruby 3.1+ has a conflicting Psych version with Rails 6.x: https://stackoverflow.com/questions/71191685/visit-psych-nodes-alias-unknown-alias-default-psychbadalias
3837
# Rails 8.x has a minimum ruby of 3.2
39-
- { ruby: '3.1', gemfile: 'rails_6_1' }
40-
- { ruby: '3.1', gemfile: 'rails_8_0' }
4138
- { ruby: '3.2', gemfile: 'rails_6_1' }
4239
- { ruby: '3.3', gemfile: 'rails_6_1' }
4340
env:

.rubocop.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require:
66
- rubocop-rspec
77

88
AllCops:
9-
TargetRubyVersion: 3.1
9+
TargetRubyVersion: 3.2
1010
NewCops: enable
1111
Exclude:
1212
# These are auto-generated from a load of features that use aruba
@@ -15,6 +15,10 @@ AllCops:
1515
- 'gemfiles/*.gemfile'
1616
- 'vendor/**/*'
1717

18+
# Stylistic preference to keep dev dependencies in gemspec
19+
Gemspec/DevelopmentDependencies:
20+
Enabled: false
21+
1822
# Disabled on our repo's to enable polyglot-release
1923
Gemspec/RequireMFA:
2024
Enabled: false

Appraisals

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ appraise 'rails_6_1' do
44
gem 'activerecord'
55
gem 'capybara', '< 3.38'
66
gem 'concurrent-ruby', '< 1.3.5'
7+
gem 'cucumber', '< 11'
78
gem 'factory_bot', '< 6.4'
89
gem 'psych', '< 4'
910
gem 'railties', '~> 6.1.7'
@@ -12,6 +13,7 @@ end
1213

1314
appraise 'rails_7_0' do
1415
gem 'activerecord'
16+
gem 'capybara', '< 3.41'
1517
gem 'concurrent-ruby', '< 1.3.5'
1618
gem 'cucumber', '< 10'
1719
gem 'factory_bot', '< 6.6'
@@ -21,6 +23,8 @@ end
2123

2224
appraise 'rails_7_1' do
2325
gem 'activerecord'
26+
gem 'capybara', '< 3.41'
27+
gem 'cucumber', '< 10'
2428
gem 'railties', '~> 7.1.5'
2529
gem 'sqlite3', '~> 2.0'
2630
end

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
This file is intended to be modified using the [`changelog`](https://github.com/cucumber/changelog) command-line tool.
99

1010
## [Unreleased]
11+
### Removed
12+
- Removed support for Ruby 2.6 - 3.1 (Ruby 3.2 is now the lowest version)
13+
- Removed support for Rails 5.2 and 6.0 (6.1 is still supported and 7.0+ is preferred)
14+
15+
### Changed
16+
- In-line with minimum ruby / rails, a lot of internal non-breaking refactors have been done to remove legacy code
1117

1218
## [3.1.1] - 2025-01-30
1319
### Changed

Rakefile

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,25 @@ namespace :test do
1818
Rake::Task['appraisal'].invoke('test')
1919
end
2020

21-
desc 'Run tests against specified gemfile, e.g. rake test:gemfile[rails_6_0]'
22-
task :gemfile, :name do |_task, args|
21+
desc 'Run tests against specified gemfile, e.g. rake test:gemfile[rails_8_0]'
22+
task :full, :name do |_task, args|
2323
unless args.name && File.exist?("gemfiles/#{args.name}.gemfile")
2424
raise ArgumentError, "You must provide the name of an existing Appraisal gemfile,
25-
e.g. 'rake test:gemfile[rails_6_0]'"
25+
e.g. 'rake test:full[rails_8_0]'"
2626
end
2727

2828
Rake::Task["appraisal:#{args.name}"].invoke('test')
2929
end
30+
31+
desc 'Run unit tests only against specified gemfile, e.g. rake test:gemfile[rails_8_0]'
32+
task :spec, :name do |_task, args|
33+
unless args.name && File.exist?("gemfiles/#{args.name}.gemfile")
34+
raise ArgumentError, "You must provide the name of an existing Appraisal gemfile,
35+
e.g. 'rake test:spec[rails_8_0]'"
36+
end
37+
38+
system "BUNDLE_GEMFILE=/home/luke/Code/cucumber-rails/gemfiles/#{args.name}.gemfile bundle exec rspec"
39+
end
3040
end
3141

3242
namespace :gemfiles do

cucumber-rails.gemspec

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ $LOAD_PATH.unshift File.expand_path('lib', __dir__)
55
Gem::Specification.new do |s|
66
s.name = 'cucumber-rails'
77
s.version = File.read("#{__dir__}/VERSION")
8-
s.authors = ['Aslak Hellesøy', 'Dennis Blöte', 'Rob Holland']
8+
s.authors = ['Aslak Hellesøy', 'Dennis Blöte', 'Rob Holland', 'Luke Hill']
99
s.description = 'Cucumber Generator and Runtime for Rails'
1010
s.summary = "#{s.name}-#{s.version}"
1111
s.email = '[email protected]'
1212
s.homepage = 'https://cucumber.io'
1313

1414
s.license = 'MIT'
1515

16-
s.required_ruby_version = '>= 3.1.0'
16+
s.required_ruby_version = '>= 3.2.0'
1717
s.required_rubygems_version = '>= 3.2.8'
1818

1919
s.metadata = {
@@ -24,24 +24,24 @@ Gem::Specification.new do |s|
2424
'source_code_uri' => "https://github.com/cucumber/cucumber-rails/tree/v#{s.version}"
2525
}
2626

27-
s.add_runtime_dependency('capybara', '>= 3.11', '< 4')
28-
s.add_runtime_dependency('cucumber', '>= 5', '< 10')
29-
s.add_runtime_dependency('railties', '>= 5.2', '< 9')
27+
s.add_runtime_dependency('capybara', '>= 3.25', '< 4')
28+
s.add_runtime_dependency('cucumber', '>= 7', '< 11')
29+
s.add_runtime_dependency('railties', '>= 6.1', '< 9')
3030

3131
# Main development dependencies
3232
s.add_development_dependency('ammeter', '>= 1.1.5')
3333
s.add_development_dependency('appraisal', '>= 2.4.1', '< 3')
34-
s.add_development_dependency('aruba', '>= 1.1.2', '< 3')
34+
s.add_development_dependency('aruba', '~> 2.0')
3535
s.add_development_dependency('database_cleaner', '~> 2.0')
36-
s.add_development_dependency('rails', '>= 5.2', '< 9')
37-
s.add_development_dependency('rake', '~> 13.2')
36+
s.add_development_dependency('rails', '>= 6.1', '< 9')
37+
s.add_development_dependency('rake', '~> 13.3')
3838
s.add_development_dependency('rspec', '~> 3.13')
39-
s.add_development_dependency('rubocop', '~> 1.45.0')
39+
s.add_development_dependency('rubocop', '~> 1.62.0')
4040
s.add_development_dependency('rubocop-packaging', '~> 0.5.2')
41-
s.add_development_dependency('rubocop-performance', '~> 1.17.1')
42-
s.add_development_dependency('rubocop-rails', '~> 2.18.0')
41+
s.add_development_dependency('rubocop-performance', '~> 1.22.0')
42+
s.add_development_dependency('rubocop-rails', '~> 2.29.0')
4343
s.add_development_dependency('rubocop-rake', '~> 0.6.0')
44-
s.add_development_dependency('rubocop-rspec', '~> 2.17.0')
44+
s.add_development_dependency('rubocop-rspec', '~> 3.1.0')
4545

4646
# For Documentation:
4747
s.add_development_dependency('yard', '~> 0.9.10')

features/support/cucumber_rails_gem_helper.rb

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,17 @@ def add_cucumber_rails(options)
3434
def add_sqlite3_gem
3535
if rails_equal_or_higher_than?('7.1')
3636
add_gem 'sqlite3', '~> 2.0'
37-
elsif rails_equal_or_higher_than?('6.0')
38-
add_gem 'sqlite3', '~> 1.4'
3937
else
40-
add_gem 'sqlite3', '~> 1.3.13'
38+
add_gem 'sqlite3', '~> 1.4'
4139
end
4240
end
4341

4442
def add_selenium_webdriver_gem
4543
if rails_equal_or_higher_than?('7.0')
4644
add_gem 'selenium-webdriver', '~> 4.22', group: :test
47-
elsif rails_equal_or_higher_than?('6.0')
45+
else
4846
add_gem 'selenium-webdriver', '~> 4.0', group: :test
4947
add_gem 'webdrivers', '~> 5.0', group: :test
50-
else
51-
add_gem 'selenium-webdriver', '< 4', group: :test
52-
add_gem 'webdrivers', '~> 4.0', group: :test
53-
remove_gem 'chromedriver-helper'
5448
end
5549
end
5650

@@ -59,11 +53,7 @@ def add_remaining_gems(options)
5953
add_gem 'capybara', Capybara::VERSION, group: :test
6054
add_gem 'database_cleaner', '>= 2.0.0', group: :test unless options.include?(:no_database_cleaner)
6155
add_gem 'database_cleaner-active_record', '>= 2.0.0', group: :test if options.include?(:database_cleaner_active_record)
62-
if rails_equal_or_higher_than?('6.0')
63-
add_gem 'factory_bot', '>= 6.4', group: :test unless options.include?(:no_factory_bot)
64-
else
65-
add_gem 'factory_bot', '< 6.4', group: :test unless options.include?(:no_factory_bot)
66-
end
56+
add_gem 'factory_bot', '>= 6.4', group: :test unless options.include?(:no_factory_bot)
6757
add_gem 'rspec-expectations', '~> 3.12', group: :test
6858
end
6959

@@ -86,8 +76,8 @@ def remove_gem(name)
8676
overwrite_file('Gemfile', content)
8777
end
8878

89-
def add_gem(name, *args)
90-
line = convert_gem_opts_to_string(name, *args)
79+
def add_gem(name, *)
80+
line = convert_gem_opts_to_string(name, *)
9181
gem_regexp = /gem ["']#{name}["'].*$/
9282
gemfile_content = File.read(expand_path('Gemfile'))
9383

features/support/cucumber_rails_setup_helper.rb

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ def rails_new(options = {})
1919

2020
def run_rails_new_command(options)
2121
flags = %w[--skip-action-cable --skip-action-mailer --skip-active-job --skip-bootsnap --skip-bundle --skip-javascript
22-
--skip-jbuilder --skip-listen --skip-spring --skip-sprockets --skip-test-unit --skip-turbolinks --skip-active-storage]
23-
flags += %w[--skip-action-mailbox --skip-action-text] if rails_equal_or_higher_than?('6.0')
22+
--skip-jbuilder --skip-listen --skip-spring --skip-sprockets --skip-test-unit --skip-turbolinks
23+
--skip-active-storage --skip-action-mailbox --skip-action-text]
2424
run_command "bundle exec rails new test_app #{flags.join(' ')} #{options[:args]}"
2525
end
2626

@@ -43,10 +43,6 @@ def clear_bundle_env_vars
4343
unset_bundler_env_vars
4444
delete_environment_variable 'BUNDLE_GEMFILE'
4545
end
46-
47-
def rails_equal_or_higher_than?(version)
48-
Rails.gem_version >= Gem::Version.new(version)
49-
end
5046
end
5147

5248
World(CucumberRailsSetupHelper)

gemfiles/rails_6_1.gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ source "https://rubygems.org"
55
gem "activerecord"
66
gem "capybara", "< 3.38"
77
gem "concurrent-ruby", "< 1.3.5"
8+
gem "cucumber", "< 11"
89
gem "factory_bot", "< 6.4"
910
gem "psych", "< 4"
1011
gem "railties", "~> 6.1.7"

gemfiles/rails_7_0.gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
source "https://rubygems.org"
44

55
gem "activerecord"
6+
gem "capybara", "< 3.41"
67
gem "concurrent-ruby", "< 1.3.5"
78
gem "cucumber", "< 10"
89
gem "factory_bot", "< 6.6"

0 commit comments

Comments
 (0)