diff options
Diffstat (limited to 'test/ruby/test_exception.rb')
-rw-r--r-- | test/ruby/test_exception.rb | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index 4decddc273..a89aed8806 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -915,7 +915,7 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| end end - def capture_warning_warn + def capture_warning_warn(category: false) verbose = $VERBOSE deprecated = Warning[:deprecated] warning = [] @@ -924,8 +924,14 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| alias_method :warn2, :warn remove_method :warn - define_method(:warn) do |str| - warning << str + if category + define_method(:warn) do |str, **kw| + warning << [str, kw[:category]] + end + else + define_method(:warn) do |str| + warning << str + end end end @@ -954,6 +960,18 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| assert_equal(["\n"], capture_warning_warn {warn ""}) end + def test_warn_backwards_compatibility + warning = capture_warning_warn { Object.new.tainted? } + + assert_match(/deprecated/, warning[0]) + end + + def test_warn_category + warning = capture_warning_warn(category: true) { Object.new.tainted? } + + assert_equal :deprecated, warning[0][1] + end + def test_kernel_warn_uplevel warning = capture_warning_warn {warn("test warning", uplevel: 0)} assert_equal("#{__FILE__}:#{__LINE__-1}: warning: test warning\n", warning[0]) |