Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V3/version deps #579

Merged
merged 19 commits into from
Oct 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
24c2a87
Bump max permissible version of cucumber to v9.x and update minimum r…
luke-hill Oct 9, 2023
440f061
Update changelogs
luke-hill Oct 9, 2023
d940ebf
Downgrade some gems and remove lockfile to attempt to get a partial g…
luke-hill Oct 9, 2023
75ee4de
Permit v9 of cucumber again
luke-hill Oct 9, 2023
43438b8
Permit cucumber v9 in rails 6.1 testing
luke-hill Oct 9, 2023
5b61de7
Remove final 2 issues we guard around (1 is redundant, 1 has been fixed)
luke-hill Oct 9, 2023
ff3e1cc
Remove duplicate step from codebase, use aruba
luke-hill Oct 9, 2023
8048ce1
Remove small file and absorb into env.rb
luke-hill Oct 9, 2023
ed00f65
Lean on aruba command for features
luke-hill Oct 10, 2023
3e3c51a
Add changelog
luke-hill Oct 13, 2023
27857bb
Add max version restrictions for some of the older rails gems now 7.1…
luke-hill Oct 13, 2023
867d911
Ensure no args are passed downstream
luke-hill Oct 13, 2023
33eda14
This class was removed from the stdlib around ruby 1.9.3
luke-hill Oct 13, 2023
f055c8d
Add matrix gem in to mitigate slightly older capybara issues
luke-hill Oct 13, 2023
950de89
Pass in a Minitest run-name if needed
luke-hill Oct 13, 2023
8ce19f6
Manually overload the matrix require until 3.36+ of capybara is the min
luke-hill Oct 13, 2023
537c2c7
Update rails 6.1 gemfile to use a slightly higher version of capybara
luke-hill Oct 13, 2023
a8814da
Add 2 more workflows to the exclusion list (One will be flaky with ps…
luke-hill Oct 13, 2023
a0183ce
ACtually exclude the runs desired
luke-hill Oct 13, 2023
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
7 changes: 6 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,16 @@ jobs:
- { ruby: '2.7', gemfile: 'rails_7_1' }
# Ruby 3+ won't work with Rails 5.2: https://github.com/rails/rails/issues/40938
- { ruby: '3.0', gemfile: 'rails_5_2' }
# Capybara has an incompatibility here with rails 6. It's easier to just exclude this one run from the matrix until it's out of support
- { ruby: '3.0', gemfile: 'rails_6_0' }
- { ruby: '3.0', gemfile: 'rails_6_1' }
- { ruby: '3.1', gemfile: 'rails_5_2' }
# Ruby 3.1+ has a conflicting Psych version with Rails 6.0 (And maybe 6.1...): https://stackoverflow.com/questions/71191685/visit-psych-nodes-alias-unknown-alias-default-psychbadalias
# 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
- { ruby: '3.1', gemfile: 'rails_6_0' }
- { ruby: '3.1', gemfile: 'rails_6_1' }
- { ruby: '3.2', gemfile: 'rails_5_2' }
- { ruby: '3.2', gemfile: 'rails_6_0' }
- { ruby: '3.2', gemfile: 'rails_6_1' }
env:
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
steps:
Expand Down
13 changes: 0 additions & 13 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,6 @@ Layout/LineLength:
- '^When'
- '^Then'

# This needs fixing as it's inheriting a lot more than what we originally need.
# The inheritance chain goes all the way down to a single test case which the world
# definitely doesn't represent. GH issue 505
Lint/MissingSuper:
Exclude:
- lib/cucumber/rails/world.rb

# These can both be removed once we upgrade rubocop and rubocop-rspec to more up to date versions
Metrics/BlockLength:
Exclude:
- './spec/**/*_spec.rb'
- 'cucumber-rails.gemspec'

# This allows us to read the chmod action in a more reproducible way
Style/NumericLiteralPrefix:
EnforcedOctalStyle: zero_only
Expand Down
8 changes: 6 additions & 2 deletions Appraisals
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ end

appraise 'rails_6_0' do
gem 'activerecord'
gem 'capybara', '< 3.35'
gem 'cucumber', '< 6'
gem 'matrix' # Until capybara 3.36+
gem 'psych', '< 4'
gem 'rails-html-sanitizer', '< 1.4.3'
gem 'railties', '~> 6.0.3'
Expand All @@ -21,15 +23,17 @@ end

appraise 'rails_6_1' do
gem 'activerecord'
gem 'cucumber', '< 9'
gem 'capybara', '< 3.38'
gem 'cucumber', '< 10'
gem 'psych', '< 4'
gem 'railties', '~> 6.1.3'
gem 'sqlite3', '~> 1.4'
end

appraise 'rails_7_0' do
gem 'activerecord'
gem 'railties', '~> 7.0.0'
gem 'cucumber', '< 10'
gem 'railties', '~> 7.0.0'
gem 'sqlite3', '~> 1.4'
end

Expand Down
10 changes: 5 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ This file is intended to be modified using the [`changelog`](github.com/cucumber

### Fixed
- Some of the rails 5.2 tests were installing lots of old conflicting gems ([luke-hill])
- Generator updates:
- Updated the install locations for some scripts from `script/` to `bin/`
- Changed some install generators to remove some legacy items
- Updates have facilitated minimum support versions altering: capybara must be `v3.11+` and cucumber must be `v5+`
([luke-hill])
- Generator updates (Updated the install locations for some scripts from `script/` to `bin/` and remove some legacy items)
([luke-hill])
- Update minimum versions of several gems: capybara must be `v3.11+` and cucumber must be `v5+` (cucumber v9 is also permissible)
([luke-hill])
- Fixed an issue where the World instantiation didn't re-run the inherited classes initializer ([luke-hill])

## [3.0.0.rc.1] - 2023-09-15
### Removed
Expand Down
13 changes: 7 additions & 6 deletions cucumber-rails.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ Gem::Specification.new do |s|

s.license = 'MIT'

s.required_ruby_version = '>= 2.6.0'
s.required_rubygems_version = '>= 3.2.3'

s.metadata = {
'bug_tracker_uri' => 'https://github.com/cucumber/cucumber-rails/issues',
'changelog_uri' => "https://github.com/cucumber/cucumber-rails/blob/v#{s.version}/CHANGELOG.md",
Expand All @@ -22,7 +25,7 @@ Gem::Specification.new do |s|
}

s.add_runtime_dependency('capybara', '>= 3.11', '< 4')
s.add_runtime_dependency('cucumber', '>= 5', '< 9')
s.add_runtime_dependency('cucumber', '>= 5', '< 10')
s.add_runtime_dependency('railties', '>= 5.2', '< 8')

# Main development dependencies
Expand All @@ -33,16 +36,14 @@ Gem::Specification.new do |s|
s.add_development_dependency('rails', '>= 5.2', '< 8')
s.add_development_dependency('rake', '>= 12.0')
s.add_development_dependency('rspec', '~> 3.6')
s.add_development_dependency('rubocop', '~> 1.28.2')
s.add_development_dependency('rubocop', '~> 1.31.0')
s.add_development_dependency('rubocop-packaging', '~> 0.5.1')
s.add_development_dependency('rubocop-performance', '~> 1.13.3')
s.add_development_dependency('rubocop-rspec', '~> 2.10.0')
s.add_development_dependency('rubocop-performance', '~> 1.17.0')
s.add_development_dependency('rubocop-rspec', '~> 2.12.0')

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

s.required_ruby_version = '>= 2.6.0'
s.required_rubygems_version = '>= 3.2.3'
s.require_path = 'lib'
s.files = Dir['lib/**/*', 'CHANGELOG.md', 'CONTRIBUTING.md', 'LICENSE', 'README.md']
end
2 changes: 1 addition & 1 deletion features/allow_rescue.feature
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Feature: Allow Cucumber to rescue exceptions
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
2 steps (2 passed)
Expand Down
8 changes: 4 additions & 4 deletions features/capybara_javascript_drivers.feature
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Feature: Capybara Javascript Drivers
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
6 steps (6 passed)
Expand Down Expand Up @@ -87,7 +87,7 @@ Feature: Capybara Javascript Drivers
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
6 steps (6 passed)
Expand Down Expand Up @@ -126,7 +126,7 @@ Feature: Capybara Javascript Drivers
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
3 steps (3 passed)
Expand Down Expand Up @@ -176,7 +176,7 @@ Feature: Capybara Javascript Drivers
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
6 steps (6 passed)
Expand Down
16 changes: 8 additions & 8 deletions features/choose_javascript_database_strategy.feature
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ Feature: Choose javascript database strategy
Then the DatabaseCleaner strategy should be transaction
And I should have 2 widgets
"""
And I run the cukes
Then the feature run should pass with:
And I run `bundle exec cucumber`
Then the feature should pass with:
"""
3 scenarios (3 passed)
10 steps (10 passed)
Expand All @@ -97,8 +97,8 @@ Feature: Choose javascript database strategy
Scenario:
Then I should have 2 widgets
"""
And I run the cukes
Then the feature run should pass with:
And I run `bundle exec cucumber`
Then the feature should pass with:
"""
2 scenarios (2 passed)
5 steps (5 passed)
Expand Down Expand Up @@ -126,8 +126,8 @@ Feature: Choose javascript database strategy
Then I should have 2 widgets
And the DatabaseCleaner strategy should be transaction
"""
And I run the cukes
Then the feature run should pass with:
And I run `bundle exec cucumber`
Then the feature should pass with:
"""
2 scenarios (2 passed)
7 steps (7 passed)
Expand All @@ -149,8 +149,8 @@ Feature: Choose javascript database strategy
Scenario:
Then I should have 3 widgets
"""
And I run the cukes
Then the feature run should pass with:
And I run `bundle exec cucumber`
Then the feature should pass with:
"""
2 scenarios (2 passed)
3 steps (3 passed)
Expand Down
4 changes: 2 additions & 2 deletions features/configuration.feature
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Feature: Cucumber Rails Configuration
end
"""
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
1 step (1 passed)
Expand All @@ -41,7 +41,7 @@ Feature: Cucumber Rails Configuration
end
"""
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
1 step (1 passed)
Expand Down
6 changes: 3 additions & 3 deletions features/database_cleaner.feature
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Feature: Database Cleaner
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
2 scenarios (2 passed)
6 steps (6 passed)
Expand Down Expand Up @@ -80,7 +80,7 @@ Feature: Database Cleaner
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
2 scenarios (2 passed)
6 steps (6 passed)
Expand Down Expand Up @@ -124,7 +124,7 @@ Feature: Database Cleaner
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
2 scenarios (2 passed)
6 steps (6 passed)
Expand Down
2 changes: 1 addition & 1 deletion features/disable_automatic_database_cleaning.feature
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Feature: Disable automatic database cleaning
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
2 scenarios (2 passed)
4 steps (4 passed)
Expand Down
4 changes: 2 additions & 2 deletions features/emulate_javascript.feature
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Feature: Emulate Javascript
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
3 steps (3 passed)
Expand Down Expand Up @@ -118,7 +118,7 @@ Feature: Emulate Javascript
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
9 steps (9 passed)
Expand Down
2 changes: 1 addition & 1 deletion features/rest_api.feature
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Feature: REST API
"""
And I run `bundle exec rake db:migrate`
And I run `bundle exec rake cucumber`
Then the feature run should pass with:
Then the feature should pass with:
"""
1 scenario (1 passed)
2 steps (2 passed)
Expand Down
12 changes: 0 additions & 12 deletions features/step_definitions/cucumber_rails_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,3 @@

overwrite_file(file, content.gsub(/\.(datetime|time|date)_field/, '.\1_select'))
end

When('I run the cukes') do
run_command_and_stop('bundle exec cucumber')
end

# Copied from Aruba
Then('the feature run should pass with:') do |string|
step 'the output should not contain " failed)"'
step 'the output should not contain " undefined)"'
step 'the exit status should be 0'
step 'the output should contain:', string
end
5 changes: 0 additions & 5 deletions features/support/aruba.rb

This file was deleted.

4 changes: 4 additions & 0 deletions features/support/env.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,7 @@

require 'rspec/expectations'
require 'aruba/cucumber'

Aruba.configure do |config|
config.exit_timeout = 360
end
2 changes: 2 additions & 0 deletions gemfiles/rails_6_0.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
source "https://rubygems.org"

gem "activerecord"
gem "capybara", "< 3.35"
gem "cucumber", "< 6"
gem "matrix"
gem "psych", "< 4"
gem "rails-html-sanitizer", "< 1.4.3"
gem "railties", "~> 6.0.3"
Expand Down
3 changes: 2 additions & 1 deletion gemfiles/rails_6_1.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
source "https://rubygems.org"

gem "activerecord"
gem "cucumber", "< 9"
gem "capybara", "< 3.38"
gem "cucumber", "< 10"
gem "psych", "< 4"
gem "railties", "~> 6.1.3"
gem "sqlite3", "~> 1.4"
Expand Down
1 change: 1 addition & 0 deletions gemfiles/rails_7_0.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
source "https://rubygems.org"

gem "activerecord"
gem "cucumber", "< 10"
gem "railties", "~> 7.0.0"
gem "sqlite3", "~> 1.4"

Expand Down
2 changes: 1 addition & 1 deletion lib/cucumber/rails/world.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class World < ::ActionDispatch::IntegrationTest
include ActiveSupport::Testing::SetupAndTeardown if ActiveSupport::Testing.const_defined?(:SetupAndTeardown)

def initialize
@_result = Test::Unit::TestResult.new if defined?(Test::Unit::TestResult)
super('MiniTest run-name if needed')
end

unless defined?(ActiveRecord::Base)
Expand Down