Project

General

Profile

Bug #15478 » 0001-erb-remove-deprecation-warnings-from-ERB.new.patch

normalperson (Eric Wong), 12/28/2018 10:51 PM

View differences:

lib/erb.rb
#
def initialize(str, safe_level=NOT_GIVEN, legacy_trim_mode=NOT_GIVEN, legacy_eoutvar=NOT_GIVEN, trim_mode: nil, eoutvar: '_erbout')
# Complex initializer for $SAFE deprecation at [Feature #14256], which should be removed at a version later than 2.7.
if safe_level != NOT_GIVEN
warn 'Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.', uplevel: 1
else
case safe_level
when NOT_GIVEN, nil, 0
safe_level = nil
else
warn 'Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.', uplevel: 1
end
if legacy_trim_mode != NOT_GIVEN
warn 'Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.', uplevel: 1
trim_mode = legacy_trim_mode
end
if legacy_eoutvar != NOT_GIVEN
warn 'Passing eoutvar with the 4th argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, eoutvar: ...) instead.', uplevel: 1
eoutvar = legacy_eoutvar
end
test/erb/test_erb.rb
# These interfaces will be removed later than Ruby 2.7.
def test_deprecated_interface_warnings
[nil, 0, 1, 2].each do |safe|
[nil, 0].each do |safe|
assert_no_warning(/2nd argument of ERB.new is deprecated/) do
ERB.new('', safe)
end
end
[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
assert_no_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
assert_no_warning(/4th argument of ERB.new is deprecated/) do
ERB.new('', nil, nil, eoutvar)
end
end
-
(1-1/2)