diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 544363c..5ef478a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,11 +8,23 @@ jobs: fail-fast: false matrix: ruby: ['2.7', '3.0', '3.1', '3.2', '3.3'] - rails: ['7.0', '7.1', 'edge'] + rails: ['7.0', '7.1', '7.2', '8.0', 'edge'] exclude: + - ruby: '2.7' + rails: '7.2' + - ruby: '2.7' + rails: '8.0' - ruby: '2.7' rails: 'edge' - ruby: '3.0' + rails: '7.2' + - ruby: '3.0' + rails: '8.0' + - ruby: '3.0' + rails: 'edge' + - ruby: '3.1' + rails: '8.0' + - ruby: '3.1' rails: 'edge' env: BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile diff --git a/Gemfile b/Gemfile index 0d211ae..91cbf7e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,9 @@ -source 'https://rubygems.org' +source "https://rubygems.org" gemspec gem "sqlite3" + +group :development, :test do + gem "debug" +end diff --git a/gemfiles/rails_7.2.gemfile b/gemfiles/rails_7.2.gemfile new file mode 100644 index 0000000..3b270f7 --- /dev/null +++ b/gemfiles/rails_7.2.gemfile @@ -0,0 +1,11 @@ +source "https://rubygems.org" + +gem "actionpack", github: "rails/rails", branch: "7-2-stable" +gem "activerecord", github: "rails/rails", branch: "7-2-stable" +gem "railties", github: "rails/rails", branch: "7-2-stable" + +gem "rack", ">= 2.2.4", "< 4" +gem "sqlite3" + +gemspec :path => "../" + diff --git a/gemfiles/rails_8.0.gemfile b/gemfiles/rails_8.0.gemfile new file mode 100644 index 0000000..40ce340 --- /dev/null +++ b/gemfiles/rails_8.0.gemfile @@ -0,0 +1,11 @@ +source "https://rubygems.org" + +gem "actionpack", github: "rails/rails", branch: "8-0-stable" +gem "activerecord", github: "rails/rails", branch: "8-0-stable" +gem "railties", github: "rails/rails", branch: "8-0-stable" + +gem "rack", ">= 2.2.4", "< 4" +gem "sqlite3" + +gemspec :path => "../" + diff --git a/test/helper.rb b/test/helper.rb index 20d8b0b..3f9417e 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -1,13 +1,14 @@ -require 'bundler/setup' +require "bundler/setup" -require 'active_record' -require 'action_controller' -require 'action_dispatch' -require 'minitest/autorun' +require "active_record" +require "action_controller" +require "action_dispatch" +require "debug" +require "minitest/autorun" -require 'active_record/session_store' +require "active_record/session_store" -ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') +ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") SharedTestRoutes = ActionDispatch::Routing::RouteSet.new @@ -20,20 +21,46 @@ def before_setup end end +class RoutedRackApp + class Config < Struct.new(:middleware) + end + + attr_reader :routes + + def initialize(routes, &blk) + @routes = routes + @stack = ActionDispatch::MiddlewareStack.new(&blk) + @app = @stack.build(@routes) + end + + def call(env) + @app.call(env) + end + + def config + Config.new(@stack) + end +end + class ActionDispatch::IntegrationTest < ActiveSupport::TestCase include ActionDispatch::SharedRoutes - def self.build_app(routes = nil) + def self.build_app(routes, options) RoutedRackApp.new(routes || ActionDispatch::Routing::RouteSet.new) do |middleware| middleware.use ActionDispatch::DebugExceptions + middleware.use ActionDispatch::ActionableExceptions middleware.use ActionDispatch::Callbacks middleware.use ActionDispatch::Cookies middleware.use ActionDispatch::Flash + middleware.use Rack::MethodOverride middleware.use Rack::Head + middleware.use ActionDispatch::Session::ActiveRecordStore, options.reverse_merge(key: "_session_id") yield(middleware) if block_given? end end + self.app = build_app(nil, {}) + private def with_test_route_set(options = {}) @@ -45,10 +72,7 @@ def with_test_route_set(options = {}) actions.each { |action| get action, controller: "#{controller_namespace}/test" } end - @app = self.class.build_app(set) do |middleware| - middleware.use ActionDispatch::Session::ActiveRecordStore, options.reverse_merge(:key => '_session_id') - middleware.delete ActionDispatch::ShowExceptions - end + self.class.app = self.class.build_app(set, options) yield end @@ -63,17 +87,4 @@ def with_store(class_name) end end -class RoutedRackApp - attr_reader :routes - - def initialize(routes, &blk) - @routes = routes - @stack = ActionDispatch::MiddlewareStack.new(&blk).build(@routes) - end - - def call(env) - @stack.call(env) - end -end - ActiveSupport::TestCase.test_order = :random diff --git a/test/logger_silencer_test.rb b/test/logger_silencer_test.rb index 8462fbb..6506e6f 100644 --- a/test/logger_silencer_test.rb +++ b/test/logger_silencer_test.rb @@ -39,7 +39,9 @@ def setup def test_log_silencer_with_logger_not_raise_exception with_logger ActiveSupport::Logger.new(Tempfile.new("tempfile")) do with_test_route_set do - get "/set_session_value" + assert_nothing_raised do + get "/set_session_value" + end end end end