From cc777d09f44fa909a336ba14f3aa802ffe16e010 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Thu, 22 Feb 2018 13:28:25 +0000 Subject: erb.rb: deprecate safe_level of ERB.new Also, as it's in the middle of the list of 4 arguments, 3rd and 4th arguments (trim_mode, eoutvar) are changed to keyword arguments. Old ways to specify arguments are deprecated and warned now. bin/erb: deprecate -S option. We'll remove all of deprecated ones at Ruby 2.7+. enc/make_encmake.rb: stopped using deprecated interface ext/etc/mkconstants.rb: ditto ext/socket/mkconstants.rb: ditto sample/ripper/ruby2html.rb: ditto spec/ruby/library/erb/defmethod/def_erb_method_spec.rb: ditto spec/ruby/library/erb/new_spec.rb: ditto test/erb/test_erb.rb: ditto test/erb/test_erb_command.rb: ditto tool/generic_erb.rb: ditto tool/ruby_vm/helpers/dumper.rb: ditto tool/transcode-tblgen.rb: ditto lib/rdoc/erbio.rb: ditto lib/rdoc/generator/darkfish.rb: ditto [Feature #14256] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/erb/test_erb.rb | 84 ++++++++++++++++++++++++++++++-------------- test/erb/test_erb_command.rb | 12 +++++++ 2 files changed, 69 insertions(+), 27 deletions(-) (limited to 'test') diff --git a/test/erb/test_erb.rb b/test/erb/test_erb.rb index 045ce5129b..ffa1fef23d 100644 --- a/test/erb/test_erb.rb +++ b/test/erb/test_erb.rb @@ -24,16 +24,22 @@ class TestERB < Test::Unit::TestCase assert_match(/\Atest filename:1\b/, e.backtrace[0]) end + # [deprecated] This will be removed at Ruby 2.7 def test_without_filename_with_safe_level - erb = ERB.new("<% raise ::TestERB::MyError %>", 1) + erb = EnvUtil.suppress_warning do + ERB.new("<% raise ::TestERB::MyError %>", 1) + end e = assert_raise(MyError) { erb.result } assert_match(/\A\(erb\):1\b/, e.backtrace[0]) end + # [deprecated] This will be removed at Ruby 2.7 def test_with_filename_and_safe_level - erb = ERB.new("<% raise ::TestERB::MyError %>", 1) + erb = EnvUtil.suppress_warning do + ERB.new("<% raise ::TestERB::MyError %>", 1) + end erb.filename = "test filename" e = assert_raise(MyError) { erb.result @@ -92,9 +98,12 @@ class TestERBCore < Test::Unit::TestCase end def test_core - _test_core(nil) - _test_core(0) - _test_core(1) + # [deprecated] Fix initializer at Ruby 2.7 + EnvUtil.suppress_warning do + _test_core(nil) + _test_core(0) + _test_core(1) + end end def _test_core(safe) @@ -203,26 +212,26 @@ EOS end def test_trim_line1_with_carriage_return - erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", nil, '>') + erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", trim_mode: '>') assert_equal("line\r\n" * 3, erb.result) - erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", nil, '%>') + erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", trim_mode: '%>') assert_equal("line\r\n" * 3, erb.result) end def test_trim_line2_with_carriage_return - erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", nil, '<>') + erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", trim_mode: '<>') assert_equal("line\r\n" * 3, erb.result) - erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", nil, '%<>') + erb = @erb.new("<% 3.times do %>\r\nline\r\n<% end %>\r\n", trim_mode: '%<>') assert_equal("line\r\n" * 3, erb.result) end def test_explicit_trim_line_with_carriage_return - erb = @erb.new("<%- 3.times do -%>\r\nline\r\n<%- end -%>\r\n", nil, '-') + erb = @erb.new("<%- 3.times do -%>\r\nline\r\n<%- end -%>\r\n", trim_mode: '-') assert_equal("line\r\n" * 3, erb.result) - erb = @erb.new("<%- 3.times do -%>\r\nline\r\n<%- end -%>\r\n", nil, '%-') + erb = @erb.new("<%- 3.times do -%>\r\nline\r\n<%- end -%>\r\n", trim_mode: '%-') assert_equal("line\r\n" * 3, erb.result) end @@ -259,26 +268,26 @@ EOS %n = 1 <%= n%> EOS - assert_equal("1\n", ERB.new(src, nil, '%').result(binding)) + assert_equal("1\n", ERB.new(src, trim_mode: '%').result(binding)) src = < EOS ans = "\n" - assert_equal(ans, ERB.new(src, nil, '%').result(binding)) + assert_equal(ans, ERB.new(src, trim_mode: '%').result(binding)) src = "<%\n%>" # ans = "\n" ans = "" - assert_equal(ans, ERB.new(src, nil, '%').result(binding)) + assert_equal(ans, ERB.new(src, trim_mode: '%').result(binding)) src = <<%= n%> EOS - assert_equal("1\n", ERB.new(src, nil, '%').result(binding)) + assert_equal("1\n", ERB.new(src, trim_mode: '%').result(binding)) src = <<%1 %% EOS - assert_equal(ans, ERB.new(src, nil, '%').result(binding)) + assert_equal(ans, ERB.new(src, trim_mode: '%').result(binding)) end def test_def_erb_method @@ -378,7 +387,7 @@ foo %% print 'foo' EOS - assert_equal(ans, ERB.new(src, nil, '%').result) + assert_equal(ans, ERB.new(src, trim_mode: '%').result) end def test_keep_lineno @@ -389,7 +398,7 @@ Hello,\s % raise("lineno") EOS - erb = ERB.new(src, nil, '%') + erb = ERB.new(src, trim_mode: '%') e = assert_raise(RuntimeError) { erb.result } @@ -407,7 +416,7 @@ EOS %>Hello,\s World%> EOS - assert_equal(ans, ERB.new(src, nil, '>').result) + assert_equal(ans, ERB.new(src, trim_mode: '>').result) ans = < @@ -415,7 +424,7 @@ Hello,\s World%> EOS - assert_equal(ans, ERB.new(src, nil, '<>').result) + assert_equal(ans, ERB.new(src, trim_mode: '<>').result) ans = < @@ -440,13 +449,13 @@ EOS } assert_match(/\A\(erb\):5\b/, e.backtrace[0].to_s) - erb = ERB.new(src, nil, '>') + erb = ERB.new(src, trim_mode: '>') e = assert_raise(RuntimeError) { erb.result } assert_match(/\A\(erb\):5\b/, e.backtrace[0].to_s) - erb = ERB.new(src, nil, '<>') + erb = ERB.new(src, trim_mode: '<>') e = assert_raise(RuntimeError) { erb.result } @@ -460,13 +469,13 @@ EOS <% raise("lineno") %> EOS - erb = ERB.new(src, nil, '-') + erb = ERB.new(src, trim_mode: '-') e = assert_raise(RuntimeError) { erb.result } assert_match(/\A\(erb\):5\b/, e.backtrace[0].to_s) - erb = ERB.new(src, nil, '%-') + erb = ERB.new(src, trim_mode: '%-') e = assert_raise(RuntimeError) { erb.result } @@ -502,8 +511,8 @@ NotSkip NotSkip * WORLD KeepNewLine \s EOS - assert_equal(ans, ERB.new(src, nil, '-').result) - assert_equal(ans, ERB.new(src, nil, '-%').result) + assert_equal(ans, ERB.new(src, trim_mode: '-').result) + assert_equal(ans, ERB.new(src, trim_mode: '-%').result) end def test_url_encode @@ -519,7 +528,7 @@ EOS end def test_percent_after_etag - assert_equal("1%", @erb.new("<%= 1 %>%", nil, "%").result) + assert_equal("1%", @erb.new("<%= 1 %>%", trim_mode: "%").result) end def test_token_extension @@ -629,6 +638,27 @@ EOS @erb.new("<% # comment %>\n").result end end + + # These interfaces will be removed at Ruby 2.7. + def test_deprecated_interface_warnings + [nil, 0, 1, 2].each do |safe| + assert_warning(/2nd argument of ERB.new is deprecated/) do + ERB.new('', safe) + end + end + + [nil, '', '%', '%<>'].each do |trim| + assert_warning(/3rd argument of ERB.new is deprecated/) do + ERB.new('', nil, trim) + end + end + + [nil, '_erbout', '_hamlout'].each do |eoutvar| + assert_warning(/4th argument of ERB.new is deprecated/) do + ERB.new('', nil, nil, eoutvar) + end + end + end end class TestERBCoreWOStrScan < TestERBCore diff --git a/test/erb/test_erb_command.rb b/test/erb/test_erb_command.rb index 7e2b874632..ac87b07740 100644 --- a/test/erb/test_erb_command.rb +++ b/test/erb/test_erb_command.rb @@ -15,4 +15,16 @@ class TestErbCommand < Test::Unit::TestCase File.expand_path("../../../bin/erb", __FILE__)], "<%=''.encoding.to_s%>", ["UTF-8"]) end + + # These interfaces will be removed at Ruby 2.7. + def test_deprecated_option + warnings = [ + "warning: -S option of erb command is deprecated. Please do not use this.", + "warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.", + ] + assert_in_out_err(["-w", + File.expand_path("../../../bin/erb", __FILE__), + "-S", "0"], + "hoge", ["hoge"], warnings) + end end -- cgit v1.2.3