rspec / rspec-rails

RSpec for Rails 6+
https://rspec.info
MIT License
5.14k stars 1.03k forks source link

Wrap examples with Rails executor #2713

Open bensheldon opened 7 months ago

bensheldon commented 7 months ago

Describe the solution you'd like

In #2644, Execution Contexts were cleared, but did not go to fully wrapping specs with a Rails Executor. In the current version of Rails (7.1) TestCases look like this:

ActiveSupport.on_load(:active_support_test_case) do
  if app.config.active_support.executor_around_test_case
    require "active_support/executor/test_helper"
    include ActiveSupport::Executor::TestHelper
  else
    require "active_support/current_attributes/test_helper"
    include ActiveSupport::CurrentAttributes::TestHelper

    require "active_support/execution_context/test_helper"
    include ActiveSupport::ExecutionContext::TestHelper
  end
end

...and it would be nice if rspec-rails offered that too of using ActiveSupport::Executor::TestHelper

JonRowe commented 7 months ago

See also #2712 for build failures attempting this caused.

javierjulio commented 3 months ago

I found my way here for the CurrentAttributes reset portion but seems several of these things are tied together. Worth noting that even with a rails spec type (e.g. type: :request) CurrentAttributes are not reset in rspec-rails. I've created #2752 and #2753 to help address this. The former is a temporary fix considering the current state of the RailsExampleGroup to match what Rails does for that condition. It will reset CurrentAttributes for each example. The ideal fix is in the latter which should use either the executor or the individual test helpers like noted in the description here.