From dbc735f67752cb666893b41a21886f75b5f0827d Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Sat, 7 Jan 2023 18:38:09 +1100 Subject: [PATCH 1/7] Remove runtime dependencies: `mime-types` and `rexml` --- CHANGELOG.md | 2 ++ cucumber-rails.gemspec | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 944466d8..dd8b6132 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 This file is intended to be modified using the [`changelog`](github.com/cucumber/changelog) command-line tool. ## [Unreleased] +### Removed +- Removed runtime dependencies: `mime-types` and `rexml` [#559](https://github.com/cucumber/cucumber-rails/pull/559) ## [2.6.1] - 2022-10-12 ### Changed diff --git a/cucumber-rails.gemspec b/cucumber-rails.gemspec index 2d825344..cc846daa 100644 --- a/cucumber-rails.gemspec +++ b/cucumber-rails.gemspec @@ -23,10 +23,8 @@ Gem::Specification.new do |s| s.add_runtime_dependency('capybara', ['>= 2.18', '< 4']) s.add_runtime_dependency('cucumber', '>= 3.2', '< 9') - s.add_runtime_dependency('mime-types', ['~> 3.3']) s.add_runtime_dependency('nokogiri', '~> 1.10') s.add_runtime_dependency('railties', ['>= 5.0', '< 8']) - s.add_runtime_dependency('rexml', '~> 3.0') # rexml is a bundled gem from ruby 3 s.add_runtime_dependency('webrick', '~> 1.7') # webrick is a bundled gem from ruby 3 # Main development dependencies From f6c8f88bd75718e8207db6528b1304fc6b5bb8bc Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Sat, 7 Jan 2023 18:38:14 +1100 Subject: [PATCH 2/7] Allow the latest selenium-webdriver in feature tests for Rails 6+ --- features/support/cucumber_rails_helper.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/features/support/cucumber_rails_helper.rb b/features/support/cucumber_rails_helper.rb index 50358a2d..3c825cbf 100644 --- a/features/support/cucumber_rails_helper.rb +++ b/features/support/cucumber_rails_helper.rb @@ -19,7 +19,6 @@ def install_cucumber_rails(*options) add_gem 'cucumber', Cucumber::VERSION, group: :test add_gem 'capybara', Capybara::VERSION, group: :test - add_gem 'selenium-webdriver', '~> 3.11', group: :test add_gem 'rspec-expectations', '~> 3.7', group: :test add_gem 'database_cleaner', '>= 1.8.0', group: :test unless options.include?(:no_database_cleaner) add_gem 'database_cleaner-active_record', '>= 2.0.0.beta2', group: :test if options.include?(:database_cleaner_active_record) @@ -111,8 +110,10 @@ def add_conditional_gems(options) if rails_6_0_or_higher? add_gem 'sqlite3', '~> 1.4' + add_gem 'selenium-webdriver', '~> 4', group: :test else add_gem 'sqlite3', '~> 1.3.13' + add_gem 'selenium-webdriver', '~> 3.11', group: :test end end From 4d2373b858d171619fbc98a8700e5d4414ea134e Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Sat, 7 Jan 2023 18:38:17 +1100 Subject: [PATCH 3/7] Rubocop resolutions --- features/support/cucumber_rails_helper.rb | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/features/support/cucumber_rails_helper.rb b/features/support/cucumber_rails_helper.rb index 3c825cbf..7ec972be 100644 --- a/features/support/cucumber_rails_helper.rb +++ b/features/support/cucumber_rails_helper.rb @@ -4,7 +4,7 @@ require 'cucumber' require 'capybara' -module CucumberRailsHelper +module CucumberRailsHelper # rubocop:todo Layout/ModuleLength def rails_new(options = {}) validate_rails_new_success(run_rails_new_command(options)) cd options[:name] @@ -16,6 +16,7 @@ def rails_new(options = {}) def install_cucumber_rails(*options) add_conditional_gems(options) + add_rails_specific_gems add_gem 'cucumber', Cucumber::VERSION, group: :test add_gem 'capybara', Capybara::VERSION, group: :test @@ -78,8 +79,8 @@ def run_rails_new_command(options) options[:name] ||= 'test_app' flags = %w[ --skip-action-cable --skip-action-mailer --skip-active-job --skip-bootsnap --skip-bundle --skip-javascript --skip-jbuilder --skip-listen --skip-spring --skip-sprockets --skip-test-unit --skip-turbolinks ] - flags += %w[--skip-active-storage] if rails_5_2_or_higher? - flags += %w[--skip-action-mailbox --skip-action-text] if rails_6_0_or_higher? + flags += %w[--skip-active-storage] if rails_equal_or_higher_than?('5.2') + flags += %w[--skip-action-mailbox --skip-action-text] if rails_equal_or_higher_than?('6.0') run_command "bundle exec rails new #{options[:name]} #{flags.join(' ')} #{options[:args]}" end @@ -93,12 +94,8 @@ def clear_bundle_env_vars delete_environment_variable 'BUNDLE_GEMFILE' end - def rails_5_2_or_higher? - Rails.gem_version >= Gem::Version.new('5.2') - end - - def rails_6_0_or_higher? - Rails.gem_version >= Gem::Version.new('6.0') + def rails_equal_or_higher_than?(version) + Rails.gem_version >= Gem::Version.new(version) end def add_conditional_gems(options) @@ -107,8 +104,10 @@ def add_conditional_gems(options) else add_gem 'cucumber-rails', group: :test, require: false, path: File.expand_path('.').to_s end + end - if rails_6_0_or_higher? + def add_rails_specific_gems + if rails_equal_or_higher_than?('6.0') add_gem 'sqlite3', '~> 1.4' add_gem 'selenium-webdriver', '~> 4', group: :test else From a1ad97d317e1338bf89775d7c4b8bc97e8644b80 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Sat, 7 Jan 2023 19:57:50 +1100 Subject: [PATCH 4/7] Remove `webrick` runtime dependency --- CHANGELOG.md | 2 +- cucumber-rails.gemspec | 1 - features/step_definitions/cucumber_rails_steps.rb | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd8b6132..d40de537 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ This file is intended to be modified using the [`changelog`](github.com/cucumber ## [Unreleased] ### Removed -- Removed runtime dependencies: `mime-types` and `rexml` [#559](https://github.com/cucumber/cucumber-rails/pull/559) +- Removed runtime dependencies: `mime-types`, `rexml`, and `webrick` [#559](https://github.com/cucumber/cucumber-rails/pull/559) ## [2.6.1] - 2022-10-12 ### Changed diff --git a/cucumber-rails.gemspec b/cucumber-rails.gemspec index cc846daa..d1a103aa 100644 --- a/cucumber-rails.gemspec +++ b/cucumber-rails.gemspec @@ -25,7 +25,6 @@ Gem::Specification.new do |s| s.add_runtime_dependency('cucumber', '>= 3.2', '< 9') s.add_runtime_dependency('nokogiri', '~> 1.10') s.add_runtime_dependency('railties', ['>= 5.0', '< 8']) - s.add_runtime_dependency('webrick', '~> 1.7') # webrick is a bundled gem from ruby 3 # Main development dependencies s.add_development_dependency('ammeter', '>= 1.1.4') diff --git a/features/step_definitions/cucumber_rails_steps.rb b/features/step_definitions/cucumber_rails_steps.rb index 2d1b6890..6004ffa4 100644 --- a/features/step_definitions/cucumber_rails_steps.rb +++ b/features/step_definitions/cucumber_rails_steps.rb @@ -65,6 +65,8 @@ } step 'I append to "features/support/env.rb" with:', selenium_config + step 'I append to "Gemfile" with:', "gem 'webrick', group: 'test'\n" + run_command_and_stop('bundle install --jobs 4') end Given('I force {string} to use select boxes for dates') do |file| From 10649a3944b75c4ade6bbdfd507852fe052fb825 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Wed, 11 Jan 2023 06:31:04 +1100 Subject: [PATCH 5/7] Constrain the selenium-webdriver dependency to >=4.0, <5 --- features/support/cucumber_rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/support/cucumber_rails_helper.rb b/features/support/cucumber_rails_helper.rb index 7ec972be..a3ab3104 100644 --- a/features/support/cucumber_rails_helper.rb +++ b/features/support/cucumber_rails_helper.rb @@ -109,7 +109,7 @@ def add_conditional_gems(options) def add_rails_specific_gems if rails_equal_or_higher_than?('6.0') add_gem 'sqlite3', '~> 1.4' - add_gem 'selenium-webdriver', '~> 4', group: :test + add_gem 'selenium-webdriver', '~> 4.0', group: :test else add_gem 'sqlite3', '~> 1.3.13' add_gem 'selenium-webdriver', '~> 3.11', group: :test From 7928281b44e678f1df33525b547047c6a626375d Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Wed, 11 Jan 2023 06:51:45 +1100 Subject: [PATCH 6/7] Avoid using 'step' in step definitions --- features/step_definitions/cucumber_rails_steps.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/features/step_definitions/cucumber_rails_steps.rb b/features/step_definitions/cucumber_rails_steps.rb index 6004ffa4..eb0da4f8 100644 --- a/features/step_definitions/cucumber_rails_steps.rb +++ b/features/step_definitions/cucumber_rails_steps.rb @@ -63,9 +63,8 @@ Capybara.server = :webrick } - - step 'I append to "features/support/env.rb" with:', selenium_config - step 'I append to "Gemfile" with:', "gem 'webrick', group: 'test'\n" + append_to_file('features/support/env.rb', selenium_config) + append_to_file('Gemfile', "gem 'webrick', group: :test\n") run_command_and_stop('bundle install --jobs 4') end From 7f667a82df3a01346c0aaf2efbab0b4630f5414a Mon Sep 17 00:00:00 2001 From: Orien Madgwick <_@orien.io> Date: Wed, 11 Jan 2023 07:23:45 +1100 Subject: [PATCH 7/7] Rubocop: remove superfluous code --- features/support/cucumber_rails_helper.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/features/support/cucumber_rails_helper.rb b/features/support/cucumber_rails_helper.rb index a3ab3104..4f5cc789 100644 --- a/features/support/cucumber_rails_helper.rb +++ b/features/support/cucumber_rails_helper.rb @@ -4,7 +4,7 @@ require 'cucumber' require 'capybara' -module CucumberRailsHelper # rubocop:todo Layout/ModuleLength +module CucumberRailsHelper def rails_new(options = {}) validate_rails_new_success(run_rails_new_command(options)) cd options[:name] @@ -121,8 +121,7 @@ def convert_gem_opts_to_string(name, *args) parts = ["'#{name}'"] parts << args.map(&:inspect) if args.any? parts << options.inspect[1..-2] if options.any? - new_parts = parts.flatten.map { |part| part.gsub(/:(\w+)=>/, '\1: ') } - "gem #{new_parts.join(', ')}\n" + "gem #{parts.flatten.join(', ')}\n" end end