Skip to content

Commit

Permalink
CI: Add Rails axis to test matrix (#220)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikker committed Apr 25, 2024
1 parent 053f233 commit abe977a
Show file tree
Hide file tree
Showing 10 changed files with 114 additions and 19 deletions.
17 changes: 16 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,23 @@ jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: ["3.0", "3.1", "3.2", "3.3"]
ruby:
- "3.0"
- "3.1"
- "3.2"
- "3.3"
gemfile:
- Gemfile
- gemfiles/Gemfile-rails-main
- gemfiles/Gemfile-rails-7-0
- gemfiles/Gemfile-rails-6-1
exclude:
- gemfile: gemfiles/Gemfile-rails-main
ruby: "3.0"
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ Gemfile.lock
.yardoc
doc
coverage
gemfiles/*.lock
2 changes: 1 addition & 1 deletion db/migrate/20171104221735_create_passwordless_sessions.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

class CreatePasswordlessSessions < ActiveRecord::Migration[5.1]
class CreatePasswordlessSessions < ActiveRecord::Migration[6.0]
def change
create_table(:passwordless_sessions) do |t|
t.belongs_to(
Expand Down
18 changes: 18 additions & 0 deletions gemfiles/Gemfile-rails-6-1
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
source "https://rubygems.org"

gemspec(path: "..")

gem "rails", "~> 6.1.0"
gem "puma"
gem "sqlite3", "~> 1.4"
gem "yard"

group :test do
gem "capybara", require: false
gem "codecov", require: false
gem "minitest"
gem "rails-controller-testing"
end

# vim: ft=ruby

17 changes: 17 additions & 0 deletions gemfiles/Gemfile-rails-7-0
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
source "https://rubygems.org"

gemspec(path: "..")

gem "rails", "~> 7.0.0"
gem "puma"
gem "sqlite3", "~> 1.4"
gem "yard"

group :test do
gem "capybara", require: false
gem "codecov", require: false
gem "minitest"
gem "rails-controller-testing"
end

# vim: ft=ruby
18 changes: 18 additions & 0 deletions gemfiles/Gemfile-rails-main
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
source "https://rubygems.org"

gemspec(path: "..")

gem "rails", github: "rails/rails", branch: "main"
gem "puma"
gem "sqlite3", "~> 1.4"
gem "yard"

group :test do
gem "capybara", require: false
gem "codecov", require: false
gem "minitest"
gem "rails-controller-testing"
end

# vim: ft=ruby

5 changes: 1 addition & 4 deletions test/dummy/app/controllers/admin/sessions_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@

class Admin
class SessionsController < Passwordless::SessionsController
end
class Admin::SessionsController < Passwordless::SessionsController
end
13 changes: 11 additions & 2 deletions test/dummy/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,19 @@

module Dummy
class Application < Rails::Application
config.load_defaults 7.0
config.load_defaults Rails::VERSION::STRING.to_f

config.action_mailer.default_url_options = {host: "localhost", port: "3000"}
routes.default_url_options[:host] = "localhost:3000"
config.i18n.available_locales = %i[en test]

case Rails::VERSION::MAJOR
when 6
I18n.available_locales = %i[en test]
when 7..Float::INFINITY
config.i18n.available_locales = %i[en test]

# Silence deprecation warning
config.active_support.cache_format_version = 7.0
end
end
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class CreateUsersAndAdmins < ActiveRecord::Migration[7.0]
class CreateUsersAndAdmins < ActiveRecord::Migration[6.0]
def change
create_table(:admins) do |t|
t.string(:email)
Expand Down
40 changes: 30 additions & 10 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,6 @@
# to be shown.
Minitest.backtrace_filter = Minitest::BacktraceFilter.new

# Load fixtures from the engine
if ActiveSupport::TestCase.respond_to?(:fixture_paths=)
ActiveSupport::TestCase.fixture_paths = [File.expand_path("../fixtures", __FILE__)]
ActionDispatch::IntegrationTest.fixture_paths = ActiveSupport::TestCase.fixture_paths
ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_paths.first + "/files"
ActiveSupport::TestCase.fixtures(:all)
end

def Minitest.filter_backtrace(bt)
bt.select { |line| line !~ %r{/gems/} }
end
Expand Down Expand Up @@ -64,14 +56,42 @@ def with_config(options)
# This can be used when you change the`parent_mailer` config option and need
# it load a different parent class.
def reload_mailer!
return unless defined?(Passwordless::Mailer)
Passwordless.send(:remove_const, :Mailer)
load File.expand_path("../../app/mailers/passwordless/mailer.rb", __FILE__)
load(File.expand_path("../../app/mailers/passwordless/mailer.rb", __FILE__))
end

def reload_controller!
return unless defined?(Passwordless::SessionsController)
Passwordless.send(:remove_const, :SessionsController)
load File.expand_path("../../app/controllers/passwordless/sessions_controller.rb", __FILE__)
load(File.expand_path("../../app/controllers/passwordless/sessions_controller.rb", __FILE__))
end
end

include(WithConfig)

module FixturePaths
def self.included(base)
base.class_eval do
fixture_path_ = File.expand_path("./fixtures", __dir__)

if respond_to?(:fixture_paths=)
self.fixture_paths = [fixture_path_]
elsif respond_to?(:fixture_path=)
self.fixture_path = fixture_path_
else
self.file_fixture_path = "#{fixture_path_}/files"
end

fixtures(:all)
end
end
end

class ActionDispatch::IntegrationTest
include FixturePaths
end

class ActiveSupport::TestCase
include FixturePaths
end

0 comments on commit abe977a

Please sign in to comment.