From 5453a6aaa1e118ccc66bac556901b128dcc00d50 Mon Sep 17 00:00:00 2001 From: vlad-psh <85142721+vlad-psh@users.noreply.github.com> Date: Thu, 16 Nov 2023 22:23:06 -0800 Subject: [PATCH] Add support for cucumber 9 (#97) * Add support for cucumber 9 * update README, and run tests with Cucumber 9.x --------- Co-authored-by: Mathieu Jobin --- .github/workflows/build.yml | 2 +- Gemfile | 1 + History.txt | 3 +++ README.md | 4 +++- Rakefile.d/cucumber.rake | 8 +++----- features/support/env.rb | 12 ++++++++++++ lib/pickle/version.rb | 2 +- pickle.gemspec | 2 +- 8 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dbc4fbb3..76936fd9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: matrix: rails: ["7.0", "6.1", "6.0"] ruby: ["3.2.2", "3.1.4", "3.0.6", "2.7.8"] - cucumber: ["8.0", "7.0", "6.0", "5.0", "4.0", "3.0"] + cucumber: ["9.0", "8.0", "7.0", "6.0", "5.0", "4.0", "3.0"] env: RUBY_VERSION: ${{ matrix.ruby }} diff --git a/Gemfile b/Gemfile index 9383a247..7d742fb4 100644 --- a/Gemfile +++ b/Gemfile @@ -10,3 +10,4 @@ gem "rails", "~> #{ENV['RAILS_VERSION'] || '7.0'}.0" gem "cucumber", "~> #{ENV['CUKES_VERSION'] || '7.0'}" gem "cucumber-rails" gem 'fabrication', github: 'mathieujobin/fabrication', ref: '923cf6fcefd0566b1d6be7bd2f685b89388f4800' +gem 'sprockets-rails' diff --git a/History.txt b/History.txt index bb9b0866..aa02ec57 100644 --- a/History.txt +++ b/History.txt @@ -1,3 +1,6 @@ +== 0.9.0 +* Added support for Cucumber 9.x + == 0.8.0 * Added support for Cucumber 8.x * Removed support for Rails 4.2 -> 5.2 diff --git a/README.md b/README.md index b06463a9..cb5d625d 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,13 @@ Cucumber 4.x - should work with all Rails 5.x versions, tests only run for 5.2 a Cucumber 5.x - all tests pass for rails 5.2, 6.0 and 6.1 Cucumber 6.x - all tests pass for rails 6.0, 6.1 and 7.0 Cucumber 7.x - all tests pass for rails 6.0, 6.1 and 7.0 +Cucumber 8.x - all tests pass for rails 6.0, 6.1 and 7.0 +Cucumber 9.x - all tests pass for rails 6.0, 6.1 and 7.0 Please open pull-requests with fixes if you encounter any problems. No active development on this gem. -### Rails 5 and Rails 6 +### Rails 5.x, 6.x, and 7.x Add the gem to your Gemfile: diff --git a/Rakefile.d/cucumber.rake b/Rakefile.d/cucumber.rake index 08b97a44..34c91dee 100644 --- a/Rakefile.d/cucumber.rake +++ b/Rakefile.d/cucumber.rake @@ -14,17 +14,15 @@ end namespace :cucumber do task :setup do current_gemfile = ENV['BUNDLE_GEMFILE'] - sh "BUNDLE_GEMFILE=#{current_gemfile} bundle show cucumber > /tmp/cukes_version" - sh "BUNDLE_GEMFILE=#{current_gemfile} bundle show sqlite3 > /tmp/sqlite_version" - cukes_version=File.read('/tmp/cukes_version').split('-').last.chomp - sqlite_version=File.read('/tmp/sqlite_version').split('-').last.chomp + cukes_version = Gem.loaded_specs['cucumber'].version + sqlite_version = Gem.loaded_specs['sqlite3'].version puts "Versions: Cucumber #{cukes_version}, SQLite #{sqlite_version}." Bundler.with_clean_env do gemfile = "cucumber_test_app/Gemfile" rm_rf "cucumber_test_app" sh "BUNDLE_GEMFILE=#{current_gemfile} bundle exec rails new cucumber_test_app --skip-spring --skip-javascript --skip-sprockets --skip-bootsnap" sh "echo 'gem \"cucumber\", \"~> #{cukes_version}\", :require => false' >> #{gemfile}" - sh "sed -i 's/gem .sqlite3./gem \"sqlite3\", \"~> #{sqlite_version}\"/' #{gemfile}" + sh "sed -i'' -e 's/gem .sqlite3./gem \"sqlite3\", \"~> #{sqlite_version}\"/' #{gemfile}" sh "cat #{gemfile} | grep sqli" sh "echo 'gem \"cucumber-rails\", :require => false' >> #{gemfile}" sh "echo 'gem \"rspec-rails\", \"~>3.0\"' >> #{gemfile}" diff --git a/features/support/env.rb b/features/support/env.rb index 440efbc7..e7efa8ab 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -17,4 +17,16 @@ require 'cucumber/rails' Capybara.default_selector = :css ActionController::Base.allow_rescue = false + +require 'database_cleaner/active_record' DatabaseCleaner.strategy = :truncation + +Around do |scenario, block| + DatabaseCleaner.cleaning(&block) +end + +# 'Fixnum' and 'Bignum' are deprecated since ruby-3.2 (both replaced by 'Integer') +# But 'machinist' still uses 'Fixnum', so we have to use workaround: +if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.2') + class Fixnum < Integer; end +end diff --git a/lib/pickle/version.rb b/lib/pickle/version.rb index e3ca65ae..5aa0d38d 100644 --- a/lib/pickle/version.rb +++ b/lib/pickle/version.rb @@ -1,3 +1,3 @@ module Pickle - VERSION = "0.8.0" + VERSION = "0.9.0" end diff --git a/pickle.gemspec b/pickle.gemspec index b62ada04..7cf82e3d 100644 --- a/pickle.gemspec +++ b/pickle.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |s| s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.require_paths = ["lib"] - s.add_dependency "cucumber", ">=3.0", "< 9.0" + s.add_dependency "cucumber", ">=3.0", "< 10.0" s.add_dependency "rake" s.add_development_dependency "rack"