summaryrefslogtreecommitdiff
path: root/test/ruby/test_exception.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_exception.rb')
-rw-r--r--test/ruby/test_exception.rb24
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])