File tree 2 files changed +40
-5
lines changed
2 files changed +40
-5
lines changed Original file line number Diff line number Diff line change @@ -185,10 +185,31 @@ def assertion_delegator
185
185
# @private
186
186
module TaggedLoggingAdapter
187
187
require 'active_support/testing/tagged_logging'
188
- include ActiveSupport ::Testing ::TaggedLogging
189
188
190
- # Just a stub as TaggedLogging is calling `name`
191
- def name
189
+ def before_setup
190
+ @__wrapped_tagged_logger = WrappedTaggedLogging . new ( @__inspect_output )
191
+ @__wrapped_tagged_logger . before_setup
192
+ end
193
+
194
+ def tagged_logger
195
+ @__wrapped_tagged_logger . tagged_logger
196
+ end
197
+
198
+ class WrappedTaggedLogging
199
+ # TaggedLogging attempts calling `super`
200
+ include Module . new { def before_setup ; end }
201
+ include ActiveSupport ::Testing ::TaggedLogging
202
+
203
+ attr_reader :name
204
+
205
+ def initialize ( name )
206
+ @name = name
207
+ end
208
+
209
+ # It is private in the TaggedLogging module
210
+ def tagged_logger
211
+ super
212
+ end
192
213
end
193
214
end
194
215
end
Original file line number Diff line number Diff line change 29
29
end
30
30
31
31
gem "rspec-rails" , path : "../"
32
+ gem 'pry-byebug'
32
33
end
33
34
34
35
# Run specs at exit
@@ -54,6 +55,14 @@ class TestError < StandardError; end
54
55
include ::ActiveJob ::TestHelper
55
56
56
57
describe 'error raised in perform_enqueued_jobs with block' do
58
+ class StringIncompatible
59
+ def to_s
60
+ raise 'to_s was called on `name`'
61
+ end
62
+ end
63
+
64
+ let ( :name ) { StringIncompatible . new }
65
+
57
66
it 'raises the explicitly thrown error' do
58
67
allow_any_instance_of ( TestJob ) . to receive ( :perform ) . and_raise ( TestError )
59
68
@@ -64,8 +73,13 @@ class TestError < StandardError; end
64
73
TestError
65
74
end
66
75
67
- expect { perform_enqueued_jobs { TestJob . perform_later } }
68
- . to raise_error ( expected_error )
76
+ # expect {
77
+ # Necessary to make sure the tagged logging hook runs
78
+ Rails . logger = Logger . new ( $stderr)
79
+
80
+ expect { perform_enqueued_jobs { TestJob . perform_later } }
81
+ . to raise_error ( expected_error )
82
+ # }.to output(/\[ActiveJob\] \[TestJob\] \[[^\]]+\] Error performing TestJob/).to_stderr
69
83
end
70
84
end
71
85
end
You can’t perform that action at this time.
0 commit comments