From 1aeee0f3040d163e1748ef5dfab0de2c461c5a31 Mon Sep 17 00:00:00 2001 From: Olivier Bellone Date: Sat, 31 Aug 2024 18:53:52 -0700 Subject: [PATCH] Add support for Rails 7.2 and 8.0 --- .github/workflows/test_suite.yml | 11 ++--------- Appraisals | 13 +++++++++---- gemfiles/rails_7.1.gemfile | 2 +- gemfiles/rails_7.2.gemfile | 27 +++++++++++++++++++++++++++ gemfiles/rails_8.0.gemfile | 27 +++++++++++++++++++++++++++ test/dummy/config/application.rb | 2 ++ test/support/helpers.rb | 21 +++++++++++++++++++++ 7 files changed, 89 insertions(+), 14 deletions(-) create mode 100644 gemfiles/rails_7.2.gemfile create mode 100644 gemfiles/rails_8.0.gemfile diff --git a/.github/workflows/test_suite.yml b/.github/workflows/test_suite.yml index bbfe22ad..4b8357ff 100644 --- a/.github/workflows/test_suite.yml +++ b/.github/workflows/test_suite.yml @@ -1,13 +1,6 @@ name: Test Suite -on: - push: - branches: [main] - pull_request: - branches: [main] - schedule: - # 00:00 on the 1st of every month - - cron: '0 0 1 * *' +on: [push] jobs: run-tests: @@ -16,7 +9,7 @@ jobs: fail-fast: false matrix: orm: [active_record, mongoid] - rails: ["7.0", "7.1"] + rails: ["7.0", "7.1", "7.2", "8.0"] ruby: ["3.1", "3.2", "3.3", head] steps: - uses: actions/checkout@v4 diff --git a/Appraisals b/Appraisals index a9b8daea..1f86a82e 100644 --- a/Appraisals +++ b/Appraisals @@ -10,7 +10,12 @@ appraise 'rails-7.1' do gem 'minitest-rails', '~> 7.1.0' end -# appraise 'rails-7.2' do -# gem 'railties', '~> 7.2.0' -# gem 'minitest-rails', '~> 7.1.0' # TODO: Update to 7.2.0 when it is released -# end +appraise 'rails-7.2' do + gem 'railties', '~> 7.2.0' + gem 'minitest-rails', '~> 7.1.0' # TODO: Update to 7.2.0 when it is released +end + +appraise 'rails-8.0' do + gem 'railties', '~> 7.2.0' + gem 'minitest-rails', github: "bquorning/minitest-rails", branch: "rails-8-0" # TODO: Update to 8.0.0 when it is released +end diff --git a/gemfiles/rails_7.1.gemfile b/gemfiles/rails_7.1.gemfile index c9d28054..6c0529bc 100644 --- a/gemfiles/rails_7.1.gemfile +++ b/gemfiles/rails_7.1.gemfile @@ -13,7 +13,7 @@ group :active_record do end group :mongoid do - gem "mongoid", "~> 8.0" + gem "mongoid", "~> 9.0" group :test do gem "database_cleaner-mongoid", "~> 2.0" diff --git a/gemfiles/rails_7.2.gemfile b/gemfiles/rails_7.2.gemfile new file mode 100644 index 00000000..2aa95bd0 --- /dev/null +++ b/gemfiles/rails_7.2.gemfile @@ -0,0 +1,27 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "minitest-rails", "~> 7.1.0" +gem "railties", "~> 7.2.0" +gem "bigdecimal", require: false +gem "drb", require: false + +group :active_record do + gem "pg" + gem "sqlite3", "~> 1.4" +end + +group :mongoid do + gem "mongoid", "~> 9.0" + + group :test do + gem "database_cleaner-mongoid", "~> 2.0" + end +end + +group :test do + gem "rails-controller-testing" +end + +gemspec path: "../" diff --git a/gemfiles/rails_8.0.gemfile b/gemfiles/rails_8.0.gemfile new file mode 100644 index 00000000..b6e4775a --- /dev/null +++ b/gemfiles/rails_8.0.gemfile @@ -0,0 +1,27 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "minitest-rails", github: "bquorning/minitest-rails", branch: "rails-8-0" +gem "railties", "~> 8.0.0" +gem "bigdecimal", require: false +gem "drb", require: false + +group :active_record do + gem "pg" + gem "sqlite3", "~> 1.4" +end + +group :mongoid do + gem "mongoid", "~> 9.0" + + group :test do + gem "database_cleaner-mongoid", "~> 2.0" + end +end + +group :test do + gem "rails-controller-testing" +end + +gemspec path: "../" diff --git a/test/dummy/config/application.rb b/test/dummy/config/application.rb index 8478d5bb..04d323b3 100644 --- a/test/dummy/config/application.rb +++ b/test/dummy/config/application.rb @@ -14,6 +14,8 @@ module RailsApp class Application < Rails::Application + config.load_defaults 7.0 + config.encoding = 'utf-8' config.filter_parameters += [:password] diff --git a/test/support/helpers.rb b/test/support/helpers.rb index fdff79aa..345a0bd2 100644 --- a/test/support/helpers.rb +++ b/test/support/helpers.rb @@ -14,5 +14,26 @@ def generate_unique_username def generate_unique_email "#{generate_unique_username}@example.com" end + + def with_deprecation_behavior(behavior) + rails_71_and_up = Gem::Version.new(Rails.version) >= Gem::Version.new('7.1') + if rails_71_and_up + old_behavior = Rails.application.deprecators[DEVISE_ORM].behavior + Rails.application.deprecators.behavior = behavior + else + old_behavior = ActiveSupport::Deprecation.behavior + ActiveSupport::Deprecation.behavior = behavior + end + + begin + yield + ensure + if rails_71_and_up + Rails.application.deprecators.behavior = old_behavior + else + ActiveSupport::Deprecation.behavior = old_behavior + end + end + end end end