Skip to content

Commit

Permalink
Cover all warning categories by using Warning.categories
Browse files Browse the repository at this point in the history
  • Loading branch information
nobu committed Mar 15, 2024
1 parent 03e7b26 commit 1d91a1a
Showing 1 changed file with 17 additions and 44 deletions.
61 changes: 17 additions & 44 deletions test/ruby/test_exception.rb
Expand Up @@ -1064,8 +1064,7 @@ def test_message_of_name_error

def capture_warning_warn(category: false)
verbose = $VERBOSE
deprecated = Warning[:deprecated]
experimental = Warning[:experimental]
categories = Warning.categories.to_h {|cat| [cat, Warning[cat]]}
warning = []

::Warning.class_eval do
Expand All @@ -1084,15 +1083,13 @@ def capture_warning_warn(category: false)
end

$VERBOSE = true
Warning[:deprecated] = true
Warning[:experimental] = true
Warning.categories.each {|cat| Warning[cat] = true}
yield

return warning
ensure
$VERBOSE = verbose
Warning[:deprecated] = deprecated
Warning[:experimental] = experimental
categories.each {|cat, flag| Warning[cat] = flag}

::Warning.class_eval do
remove_method :warn
Expand Down Expand Up @@ -1189,48 +1186,24 @@ def warn(message)
def test_warning_category
assert_raise(TypeError) {Warning[nil]}
assert_raise(ArgumentError) {Warning[:XXXX]}
assert_include([true, false], Warning[:deprecated])
assert_include([true, false], Warning[:experimental])
end

def test_warning_category_deprecated
warning = EnvUtil.verbose_warning do
deprecated = Warning[:deprecated]
Warning[:deprecated] = true
Warning.warn "deprecated feature", category: :deprecated
ensure
Warning[:deprecated] = deprecated
end
assert_equal "deprecated feature", warning

warning = EnvUtil.verbose_warning do
deprecated = Warning[:deprecated]
Warning[:deprecated] = false
Warning.warn "deprecated feature", category: :deprecated
ensure
Warning[:deprecated] = deprecated
end
assert_empty warning
end

def test_warning_category_experimental
warning = EnvUtil.verbose_warning do
experimental = Warning[:experimental]
Warning[:experimental] = true
Warning.warn "experimental feature", category: :experimental
ensure
Warning[:experimental] = experimental
end
assert_equal "experimental feature", warning
all_assertions_foreach("categories", *Warning.categories) do |cat|
value = Warning[cat]
assert_include([true, false], value)

warning = EnvUtil.verbose_warning do
experimental = Warning[:experimental]
Warning[:experimental] = false
Warning.warn "experimental feature", category: :experimental
enabled = EnvUtil.verbose_warning do
Warning[cat] = true
Warning.warn "#{cat} feature", category: cat
end
disabled = EnvUtil.verbose_warning do
Warning[cat] = false
Warning.warn "#{cat} feature", category: cat
end
ensure
Warning[:experimental] = experimental
Warning[cat] = value
assert_equal "#{cat} feature", enabled
assert_empty disabled
end
assert_empty warning
end

def test_undef_Warning_warn
Expand Down

0 comments on commit 1d91a1a

Please sign in to comment.