From 07e595fdbd75ed44473073cdf8cd758572d11709 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 20 Dec 2019 23:48:15 +0900 Subject: Added `experimental` warning category [Feature #16420] --- test/ruby/test_exception.rb | 1 + test/ruby/test_pattern_matching.rb | 26 ++++++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index b1f4681ac5..df7a4e7cf5 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -1266,6 +1266,7 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| 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_undefined_backtrace diff --git a/test/ruby/test_pattern_matching.rb b/test/ruby/test_pattern_matching.rb index 5308ec3281..dc72aa029c 100644 --- a/test/ruby/test_pattern_matching.rb +++ b/test/ruby/test_pattern_matching.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'test/unit' -verbose, $VERBOSE = $VERBOSE, nil # suppress "warning: Pattern matching is experimental, and the behavior may change in future versions of Ruby!" +experimental, Warning[:experimental] = Warning[:experimental], false # suppress "warning: Pattern matching is experimental, and the behavior may change in future versions of Ruby!" eval "\n#{<<~'END_of_GUARD'}", binding, __FILE__, __LINE__ class TestPatternMatching < Test::Unit::TestCase class C @@ -92,7 +92,8 @@ class TestPatternMatching < Test::Unit::TestCase end assert_block do - verbose, $VERBOSE = $VERBOSE, nil # suppress "warning: Pattern matching is experimental, and the behavior may change in future versions of Ruby!" + # suppress "warning: Pattern matching is experimental, and the behavior may change in future versions of Ruby!" + experimental, Warning[:experimental] = Warning[:experimental], false eval(%q{ case true in a @@ -100,7 +101,7 @@ class TestPatternMatching < Test::Unit::TestCase end }) ensure - $VERBOSE = verbose + Warning[:experimental] = experimental end assert_block do @@ -1274,6 +1275,23 @@ END 1 in a: }, /unexpected/, '[ruby-core:95098]') end + + def assert_experimental_warning(code) + w = Warning[:experimental] + + Warning[:experimental] = false + assert_warn('') {eval(code)} + + Warning[:experimental] = true + assert_warn(/Pattern matching is experimental/) {eval(code)} + ensure + Warning[:experimental] = w + end + + def test_experimental_warning + assert_experimental_warning("case 0; in 0; end") + assert_experimental_warning("0 in 0") + end end END_of_GUARD -$VERBOSE = verbose +Warning[:experimental] = experimental -- cgit v1.2.3