Skip to content

Commit 0096e1b

Browse files
committed
Define name to work around TaggedLogging
RSpec.current_example.metadata[:name] evaluates to `nil` by the time this is called.
1 parent d372749 commit 0096e1b

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

lib/rspec/rails/adapters.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,5 +181,15 @@ def assertion_delegator
181181
#
182182
# @private
183183
TestUnitAssertionAdapter = MinitestAssertionAdapter
184+
185+
# @private
186+
module TaggedLoggingAdapter
187+
require 'active_support/testing/tagged_logging'
188+
include ActiveSupport::Testing::TaggedLogging
189+
190+
# Just a stub as TaggedLogging is calling `name`
191+
def name
192+
end
193+
end
184194
end
185195
end

lib/rspec/rails/example/rails_example_group.rb

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ module RailsExampleGroup
1212
include RSpec::Rails::MinitestLifecycleAdapter
1313
include RSpec::Rails::MinitestAssertionAdapter
1414
include RSpec::Rails::FixtureSupport
15-
16-
if ::Rails::VERSION::MAJOR >= 7
17-
require 'active_support/testing/tagged_logging'
18-
include ActiveSupport::Testing::TaggedLogging
19-
end
15+
include RSpec::Rails::TaggedLoggingAdapter if ::Rails::VERSION::MAJOR >= 7
2016
end
2117
end
2218
end

snippets/include_activesupport_testing_tagged_logger.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
end
3030

3131
gem "rspec-rails", path: "../"
32+
gem 'pry-byebug'
3233
end
3334

3435
# Run specs at exit
@@ -44,19 +45,19 @@
4445
# This connection will do for database-independent bug reports
4546
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
4647

48+
class TestError < StandardError; end
49+
4750
class TestJob < ActiveJob::Base
48-
def perform; end
51+
def perform
52+
raise TestError
53+
end
4954
end
5055

51-
class TestError < StandardError; end
52-
5356
RSpec.describe 'Foo', type: :job do
5457
include ::ActiveJob::TestHelper
5558

5659
describe 'error raised in perform_enqueued_jobs with block' do
5760
it 'raises the explicitly thrown error' do
58-
allow_any_instance_of(TestJob).to receive(:perform).and_raise(TestError)
59-
6061
# Rails 6.1+ wraps unexpected errors in tests
6162
expected_error = if Rails::VERSION::STRING.to_f >= 6.1
6263
Minitest::UnexpectedError.new(TestError)

0 commit comments

Comments
 (0)