summaryrefslogtreecommitdiff
path: root/spec/ruby/library/erb/new_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/erb/new_spec.rb')
-rw-r--r--spec/ruby/library/erb/new_spec.rb59
1 files changed, 42 insertions, 17 deletions
diff --git a/spec/ruby/library/erb/new_spec.rb b/spec/ruby/library/erb/new_spec.rb
index 917fd470b7..35ac0dfdfe 100644
--- a/spec/ruby/library/erb/new_spec.rb
+++ b/spec/ruby/library/erb/new_spec.rb
@@ -1,5 +1,6 @@
require 'erb'
-require File.expand_path('../../../spec_helper', __FILE__)
+require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
describe "ERB.new" do
before :all do
@@ -30,22 +31,28 @@ END
it "compiles eRuby script into ruby code when trim mode is 0 or not specified" do
expected = "<ul>\n\n\n\n<li>1</li>\n\n\n\n<li>2</li>\n\n\n\n<li>3</li>\n\n\n</ul>\n"
- [0, '', nil].each do |trim_mode|
- ERB.new(@eruby_str, nil, trim_mode).result.should == expected
+ [0, nil].each do |trim_mode|
+ ERBSpecs.new_erb(@eruby_str, trim_mode: trim_mode).result.should == expected
end
end
+ it "warns invalid trim_mode" do
+ -> do
+ ERBSpecs.new_erb(@eruby_str, trim_mode: '')
+ end.should complain(/Invalid ERB trim mode/)
+ end
+
it "removes '\n' when trim_mode is 1 or '>'" do
expected = "<ul>\n<li>1</li>\n<li>2</li>\n<li>3</li>\n</ul>\n"
[1, '>'].each do |trim_mode|
- ERB.new(@eruby_str, nil, trim_mode).result.should == expected
+ ERBSpecs.new_erb(@eruby_str, trim_mode: trim_mode).result.should == expected
end
end
it "removes spaces at beginning of line and '\n' when trim_mode is 2 or '<>'" do
expected = "<ul>\n<li>1</li>\n<li>2</li>\n<li>3</li>\n</ul>\n"
[2, '<>'].each do |trim_mode|
- ERB.new(@eruby_str, nil, trim_mode).result.should == expected
+ ERBSpecs.new_erb(@eruby_str, trim_mode: trim_mode).result.should == expected
end
end
@@ -61,11 +68,11 @@ END
</ul>
END
- ERB.new(input, nil, '-').result.should == expected
+ ERBSpecs.new_erb(input, trim_mode: '-').result.should == expected
end
- it "not support '<%-= expr %> even when trim_mode is '-'" do
+ it "does not support '<%-= expr %> even when trim_mode is '-'" do
input = <<'END'
<p>
@@ -74,22 +81,24 @@ END
</p>
END
- lambda { ERB.new(input, nil, '-').result }.should raise_error
+ -> {
+ ERBSpecs.new_erb(input, trim_mode: '-').result
+ }.should.raise(SyntaxError)
end
it "regards lines starting with '%' as '<% ... %>' when trim_mode is '%'" do
expected = "<ul>\n <li>1\n \n <li>2\n \n <li>3\n \n\n</ul>\n%%\n"
- ERB.new(@eruby_str2, nil, "%").result.should == expected
+ ERBSpecs.new_erb(@eruby_str2, trim_mode: "%").result.should == expected
end
it "regards lines starting with '%' as '<% ... %>' and remove \"\\n\" when trim_mode is '%>'" do
expected = "<ul>\n <li>1 <li>2 <li>3 </ul>\n%%\n"
- ERB.new(@eruby_str2, nil, '%>').result.should == expected
+ ERBSpecs.new_erb(@eruby_str2, trim_mode: '%>').result.should == expected
end
it "regard lines starting with '%' as '<% ... %>' and remove \"\\n\" when trim_mode is '%<>'" do
expected = "<ul>\n <li>1\n \n <li>2\n \n <li>3\n \n</ul>\n%%\n"
- ERB.new(@eruby_str2, nil, '%<>').result.should == expected
+ ERBSpecs.new_erb(@eruby_str2, trim_mode: '%<>').result.should == expected
end
@@ -104,13 +113,13 @@ END
%%%
END
- ERB.new(input, nil, '%-').result.should == expected
+ ERBSpecs.new_erb(input, trim_mode: '%-').result.should == expected
end
it "changes '_erbout' variable name in the produced source" do
input = @eruby_str
- match_erbout = ERB.new(input, nil, nil).src
- match_buf = ERB.new(input, nil, nil, 'buf').src
+ match_erbout = ERB.new(input, trim_mode: nil).src
+ match_buf = ERB.new(input, trim_mode: nil, eoutvar: 'buf').src
match_erbout.gsub("_erbout", "buf").should == match_buf
end
@@ -121,12 +130,28 @@ END
<b><%#= item %></b>
<%# end %>
END
- ERB.new(input).result.should == "\n<b></b>\n\n"
- ERB.new(input, nil, '<>').result.should == "<b></b>\n"
+ ERBSpecs.new_erb(input).result.should == "\n<b></b>\n\n"
+ ERBSpecs.new_erb(input, trim_mode: '<>').result.should == "<b></b>\n"
end
it "forget local variables defined previous one" do
ERB.new(@eruby_str).result
- lambda{ ERB.new("<%= list %>").result }.should raise_error(NameError)
+ ->{ ERB.new("<%= list %>").result }.should.raise(NameError)
+ end
+
+ version_is ERB.const_get(:VERSION, false), ""..."6.0.0" do
+ describe "warning about arguments" do
+ it "warns when passed safe_level and later arguments" do
+ -> {
+ ERB.new(@eruby_str, nil, '%')
+ }.should complain(/warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments./)
+ end
+
+ it "does not warn when passed arguments as keyword argument" do
+ -> {
+ ERB.new(@eruby_str, trim_mode: '%')
+ }.should_not complain(/warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments./)
+ end
+ end
end
end