@@ -25,6 +25,22 @@ def method_using_incompatible_warn_api
2525 end
2626 end
2727
28+ def opening_quote
29+ if RUBY_VERSION < '3.4'
30+ '`'
31+ else
32+ "'"
33+ end
34+ end
35+
36+ def classname_in_message
37+ if RUBY_VERSION < '3.4'
38+ ''
39+ else
40+ 'StructuredWarningsTest#'
41+ end
42+ end
43+
2844 def test_fork_in_thread
2945 return unless supports_fork?
3046
@@ -128,8 +144,6 @@ def test_base_is_default_warning
128144 end
129145
130146 def test_builtin_warnings
131- return unless supports_core_warnings?
132-
133147 with_verbose_warnings do
134148 assert_warn ( StructuredWarnings ::BuiltInWarning , /method redefined; discarding old name/ ) do
135149 class << Object . new
@@ -213,7 +227,7 @@ def test_formatting_of_warn
213227
214228 expected_warning =
215229 "#{ __FILE__ } :#{ __LINE__ - 4 } :" +
216- "in ` block in test_formatting_of_warn': " +
230+ "in #{ opening_quote } block in #{ classname_in_message } test_formatting_of_warn': " +
217231 "do not blink " +
218232 "(StructuredWarnings::StandardWarning)\n "
219233
@@ -230,25 +244,15 @@ def test_formatting_of_warn_with_uplevel
230244 end
231245
232246 expected_warning =
233- "#{ __FILE__ } :#{ __LINE__ - 4 } :"
234-
235- expected_warning +=
236- if RUBY_VERSION < '2.3'
237- "in `call': "
238- else
239- "in `block in test_formatting_of_warn_with_uplevel': "
240- end
241-
242- expected_warning +=
247+ "#{ __FILE__ } :#{ __LINE__ - 4 } :" +
248+ "in #{ opening_quote } block in #{ classname_in_message } test_formatting_of_warn_with_uplevel': " +
243249 "do not blink " +
244250 "(StructuredWarnings::StandardWarning)\n "
245251
246252 assert_equal expected_warning , actual_warning
247253 end
248254
249255 def test_formatting_of_builtin_warn
250- return unless supports_core_warnings?
251-
252256 actual_warning = capture_strderr do
253257 class << Object . new
254258 attr_accessor :name
@@ -261,13 +265,27 @@ def name
261265
262266 expected_warning =
263267 "#{ __FILE__ } :#{ __LINE__ - 7 } :" +
264- "in ` singleton class': " +
268+ "in #{ opening_quote } singleton class': " +
265269 "method redefined; discarding old name " +
266270 "(StructuredWarnings::BuiltInWarning)\n "
267271
268272 assert_equal expected_warning , actual_warning
269273 end
270274
275+ def test_formatting_of_manual_warn
276+ actual_warning = capture_strderr do
277+ Warning . warn ( "This is a test warning." )
278+ end
279+
280+ expected_warning =
281+ "#{ __FILE__ } :#{ __LINE__ - 4 } :" +
282+ "in #{ opening_quote } block in #{ classname_in_message } test_formatting_of_manual_warn': " +
283+ "This is a test warning. " +
284+ "(StructuredWarnings::BuiltInWarning)\n "
285+
286+ assert_equal expected_warning , actual_warning
287+ end
288+
271289 protected
272290
273291 def supports_fork?
@@ -280,10 +298,6 @@ def supports_fork?
280298 false
281299 end
282300
283- def supports_core_warnings?
284- Warning . instance_method ( :warn ) . source_location . nil?
285- end
286-
287301 def with_verbose_warnings
288302 verbose , $VERBOSE = $VERBOSE, true
289303
0 commit comments