Skip to content

Commit 5133efa

Browse files
authored
Remove safe_level and further positional arguments (#7)
[Feature #14256]
1 parent 75a0749 commit 5133efa

File tree

3 files changed

+13
-91
lines changed

3 files changed

+13
-91
lines changed

lib/erb.rb

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -808,20 +808,7 @@ class ERB
808808
# Chicken Fried Steak -- 9.95
809809
# A well messages pattie, breaded and fried.
810810
#
811-
def initialize(str, safe_level=NOT_GIVEN, legacy_trim_mode=NOT_GIVEN, legacy_eoutvar=NOT_GIVEN, trim_mode: nil, eoutvar: '_erbout')
812-
# Complex initializer for $SAFE deprecation at [Feature #14256]. Use keyword arguments to pass trim_mode or eoutvar.
813-
if safe_level != NOT_GIVEN
814-
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
815-
end
816-
if legacy_trim_mode != NOT_GIVEN
817-
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
818-
trim_mode = legacy_trim_mode
819-
end
820-
if legacy_eoutvar != NOT_GIVEN
821-
warn 'Passing eoutvar with the 4th argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, eoutvar: ...) instead.', uplevel: 1
822-
eoutvar = legacy_eoutvar
823-
end
824-
811+
def initialize(str, trim_mode: nil, eoutvar: '_erbout')
825812
compiler = make_compiler(trim_mode)
826813
set_eoutvar(compiler, eoutvar)
827814
@src, @encoding, @frozen_string = *compiler.compile(str)

test/erb/test_erb.rb

Lines changed: 12 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,6 @@ def test_with_filename
2424
assert_match(/\Atest filename:1\b/, e.backtrace[0])
2525
end
2626

27-
# [deprecated] This will be removed later
28-
def test_without_filename_with_safe_level
29-
erb = EnvUtil.suppress_warning do
30-
ERB.new("<% raise ::TestERB::MyError %>", 1)
31-
end
32-
e = assert_raise(MyError) {
33-
erb.result
34-
}
35-
assert_match(/\A\(erb\):1\b/, e.backtrace[0])
36-
end
37-
38-
# [deprecated] This will be removed later
39-
def test_with_filename_and_safe_level
40-
erb = EnvUtil.suppress_warning do
41-
ERB.new("<% raise ::TestERB::MyError %>", 1)
42-
end
43-
erb.filename = "test filename"
44-
e = assert_raise(MyError) {
45-
erb.result
46-
}
47-
assert_match(/\Atest filename:1\b/, e.backtrace[0])
48-
end
49-
5027
def test_with_filename_lineno
5128
erb = ERB.new("<% raise ::TestERB::MyError %>")
5229
erb.filename = "test filename"
@@ -98,25 +75,16 @@ def test_version
9875
end
9976

10077
def test_core
101-
# [deprecated] Fix initializer later
102-
EnvUtil.suppress_warning do
103-
_test_core(nil)
104-
_test_core(0)
105-
_test_core(1)
106-
end
107-
end
108-
109-
def _test_core(safe)
11078
erb = @erb.new("hello")
11179
assert_equal("hello", erb.result)
11280

113-
erb = @erb.new("hello", safe, 0)
81+
erb = @erb.new("hello", trim_mode: 0)
11482
assert_equal("hello", erb.result)
11583

116-
erb = @erb.new("hello", safe, 1)
84+
erb = @erb.new("hello", trim_mode: 1)
11785
assert_equal("hello", erb.result)
11886

119-
erb = @erb.new("hello", safe, 2)
87+
erb = @erb.new("hello", trim_mode: 2)
12088
assert_equal("hello", erb.result)
12189

12290
src = <<EOS
@@ -144,9 +112,9 @@ def _test_core(safe)
144112
EOS
145113
erb = @erb.new(src)
146114
assert_equal(ans, erb.result)
147-
erb = @erb.new(src, safe, 0)
115+
erb = @erb.new(src, trim_mode: 0)
148116
assert_equal(ans, erb.result)
149-
erb = @erb.new(src, safe, '')
117+
erb = EnvUtil.suppress_warning { @erb.new(src, trim_mode: '') }
150118
assert_equal(ans, erb.result)
151119

152120
ans = <<EOS
@@ -157,9 +125,9 @@ def _test_core(safe)
157125
* 1% n=0
158126
* 2
159127
EOS
160-
erb = @erb.new(src, safe, 1)
128+
erb = @erb.new(src, trim_mode: 1)
161129
assert_equal(ans.chomp, erb.result)
162-
erb = @erb.new(src, safe, '>')
130+
erb = @erb.new(src, trim_mode: '>')
163131
assert_equal(ans.chomp, erb.result)
164132

165133
ans = <<EOS
@@ -173,9 +141,9 @@ def _test_core(safe)
173141
* 2
174142
EOS
175143

176-
erb = @erb.new(src, safe, 2)
144+
erb = @erb.new(src, trim_mode: 2)
177145
assert_equal(ans, erb.result)
178-
erb = @erb.new(src, safe, '<>')
146+
erb = @erb.new(src, trim_mode: '<>')
179147
assert_equal(ans, erb.result)
180148

181149
ans = <<EOS
@@ -189,15 +157,15 @@ def _test_core(safe)
189157
* 0
190158
191159
EOS
192-
erb = @erb.new(src, safe, '%')
160+
erb = @erb.new(src, trim_mode: '%')
193161
assert_equal(ans, erb.result)
194162

195163
ans = <<EOS
196164
% hi
197165
= hello
198166
* 0* 0* 0
199167
EOS
200-
erb = @erb.new(src, safe, '%>')
168+
erb = @erb.new(src, trim_mode: '%>')
201169
assert_equal(ans.chomp, erb.result)
202170

203171
ans = <<EOS
@@ -207,7 +175,7 @@ def _test_core(safe)
207175
* 0
208176
* 0
209177
EOS
210-
erb = @erb.new(src, safe, '%<>')
178+
erb = @erb.new(src, trim_mode: '%<>')
211179
assert_equal(ans, erb.result)
212180
end
213181

@@ -661,27 +629,6 @@ def test_half_working_comment_backward_compatibility
661629
end
662630
end
663631

664-
# [deprecated] These interfaces will be removed later
665-
def test_deprecated_interface_warnings
666-
[nil, 0, 1, 2].each do |safe|
667-
assert_warn(/2nd argument of ERB.new is deprecated/) do
668-
ERB.new('', safe)
669-
end
670-
end
671-
672-
[nil, '', '%', '%<>'].each do |trim|
673-
assert_warn(/3rd argument of ERB.new is deprecated/) do
674-
ERB.new('', nil, trim)
675-
end
676-
end
677-
678-
[nil, '_erbout', '_hamlout'].each do |eoutvar|
679-
assert_warn(/4th argument of ERB.new is deprecated/) do
680-
ERB.new('', nil, nil, eoutvar)
681-
end
682-
end
683-
end
684-
685632
def test_prohibited_marshal_dump
686633
erb = ERB.new("")
687634
assert_raise(TypeError) {Marshal.dump(erb)}

test/erb/test_erb_command.rb

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,4 @@ def test_template_file_encoding
1515
File.expand_path("../../libexec/erb", __dir__)],
1616
"<%=''.encoding.to_s%>", ["UTF-8"])
1717
end
18-
19-
# These interfaces will be removed at Ruby 2.7.
20-
def test_deprecated_option
21-
warnings = [
22-
"warning: -S option of erb command is deprecated. Please do not use this.",
23-
/\n.+\/libexec\/erb:\d+: warning: Passing safe_level with the 2nd argument of ERB\.new is deprecated\. Do not use it, and specify other arguments as keyword arguments\.\n/,
24-
]
25-
assert_in_out_err(["-I#{File.expand_path('../../lib', __dir__)}", "-w",
26-
File.expand_path("../../libexec/erb", __dir__),
27-
"-S", "0"],
28-
"hoge", ["hoge"], warnings)
29-
end
3018
end

0 commit comments

Comments
 (0)