erb.rb: warn invalid trim_mode [Misc #15294]

From: Justin Collins <justin@presidentbeef.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-11-12 00:37:15 +00:00
Родитель 7e61fdca9a
Коммит ab5a3db48e
2 изменённых файлов: 32 добавлений и 1 удалений

Просмотреть файл

@ -665,9 +665,13 @@ class ERB
return [false, '>']
when 2
return [false, '<>']
when 0
when 0, nil
return [false, nil]
when String
unless mode.match?(/\A(%|-|>|<>){1,2}\z/)
warn_invalid_trim_mode(mode, uplevel: 5)
end
perc = mode.include?('%')
if mode.include?('-')
return [perc, '-']
@ -679,6 +683,7 @@ class ERB
[perc, nil]
end
else
warn_invalid_trim_mode(mode, uplevel: 5)
return [false, nil]
end
end
@ -730,6 +735,10 @@ class ERB
end
return enc, frozen
end
def warn_invalid_trim_mode(mode, uplevel:)
warn "Invalid ERB trim mode: #{mode.inspect} (trim_mode: nil, 0, 1, 2, or String composed of '%' and/or '-', '>', '<>')", uplevel: uplevel + 1
end
end
end

Просмотреть файл

@ -235,6 +235,28 @@ EOS
assert_equal("line\r\n" * 3, erb.result)
end
def test_invalid_trim_mode
assert_warning(/#{__FILE__}:#{__LINE__ + 1}/) do
@erb.new("", trim_mode: 'abc-def')
end
assert_warning(/Invalid ERB trim mode/) do
@erb.new("", trim_mode: 'abc-def')
end
assert_warning(/Invalid ERB trim mode/) do
@erb.new("", trim_mode: '%<')
end
assert_warning(/Invalid ERB trim mode/) do
@erb.new("", trim_mode: '%<>-')
end
assert_warning(/Invalid ERB trim mode/) do
@erb.new("", trim_mode: 3)
end
end
def test_run
out = StringIO.new
orig, $stdout = $stdout, out