diff options
Diffstat (limited to 'spec/ruby/library/erb')
| -rw-r--r-- | spec/ruby/library/erb/def_class_spec.rb | 4 | ||||
| -rw-r--r-- | spec/ruby/library/erb/def_method_spec.rb | 2 | ||||
| -rw-r--r-- | spec/ruby/library/erb/def_module_spec.rb | 5 | ||||
| -rw-r--r-- | spec/ruby/library/erb/defmethod/def_erb_method_spec.rb | 7 | ||||
| -rw-r--r-- | spec/ruby/library/erb/filename_spec.rb | 10 | ||||
| -rw-r--r-- | spec/ruby/library/erb/fixtures/classes.rb | 5 | ||||
| -rw-r--r-- | spec/ruby/library/erb/new_spec.rb | 59 | ||||
| -rw-r--r-- | spec/ruby/library/erb/result_spec.rb | 10 | ||||
| -rw-r--r-- | spec/ruby/library/erb/run_spec.rb | 13 | ||||
| -rw-r--r-- | spec/ruby/library/erb/src_spec.rb | 2 | ||||
| -rw-r--r-- | spec/ruby/library/erb/util/h_spec.rb | 4 | ||||
| -rw-r--r-- | spec/ruby/library/erb/util/html_escape_spec.rb | 5 | ||||
| -rw-r--r-- | spec/ruby/library/erb/util/shared/url_encode.rb | 16 | ||||
| -rw-r--r-- | spec/ruby/library/erb/util/u_spec.rb | 5 | ||||
| -rw-r--r-- | spec/ruby/library/erb/util/url_encode_spec.rb | 4 |
15 files changed, 88 insertions, 63 deletions
diff --git a/spec/ruby/library/erb/def_class_spec.rb b/spec/ruby/library/erb/def_class_spec.rb index ae2dcbd1e4..fb687531e0 100644 --- a/spec/ruby/library/erb/def_class_spec.rb +++ b/spec/ruby/library/erb/def_class_spec.rb @@ -1,5 +1,5 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#def_class" do @@ -24,6 +24,8 @@ END MyClass1ForErb = erb.def_class(MyClass1ForErb_, 'render()') MyClass1ForErb.method_defined?(:render).should == true MyClass1ForErb.new('foo', 123).render().should == expected + ensure + Object.send(:remove_const, :MyClass1ForErb) end end diff --git a/spec/ruby/library/erb/def_method_spec.rb b/spec/ruby/library/erb/def_method_spec.rb index e4ddedea4c..188789a693 100644 --- a/spec/ruby/library/erb/def_method_spec.rb +++ b/spec/ruby/library/erb/def_method_spec.rb @@ -1,5 +1,5 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#def_method" do diff --git a/spec/ruby/library/erb/def_module_spec.rb b/spec/ruby/library/erb/def_module_spec.rb index ed52fdfc15..5f67aeb2b9 100644 --- a/spec/ruby/library/erb/def_module_spec.rb +++ b/spec/ruby/library/erb/def_module_spec.rb @@ -1,5 +1,5 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#def_module" do @@ -22,6 +22,9 @@ END include MyModule2ForErb end MyClass2ForErb.new.render('foo', 123).should == expected + ensure + Object.send(:remove_const, :MyClass2ForErb) + Object.send(:remove_const, :MyModule2ForErb) end end diff --git a/spec/ruby/library/erb/defmethod/def_erb_method_spec.rb b/spec/ruby/library/erb/defmethod/def_erb_method_spec.rb index e1eca2fbef..1cd7582936 100644 --- a/spec/ruby/library/erb/defmethod/def_erb_method_spec.rb +++ b/spec/ruby/library/erb/defmethod/def_erb_method_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::DefMethod.def_erb_method" do @@ -50,13 +51,15 @@ END MY_INPUT4_FOR_ERB = input class MyClass4ForErb extend ERB::DefMethod - erb = ERB.new(MY_INPUT4_FOR_ERB, nil, '<>') + erb = ERBSpecs.new_erb(MY_INPUT4_FOR_ERB, trim_mode: '<>') def_erb_method('render()', erb) def initialize(items) @items = items end end MyClass4ForErb.new([10,20,30]).render().should == expected + ensure + Object.send(:remove_const, :MY_INPUT4_FOR_ERB) end diff --git a/spec/ruby/library/erb/filename_spec.rb b/spec/ruby/library/erb/filename_spec.rb index 4615f5d808..bbd2233bb3 100644 --- a/spec/ruby/library/erb/filename_spec.rb +++ b/spec/ruby/library/erb/filename_spec.rb @@ -1,19 +1,19 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#filename" do it "raises an exception if there are errors processing content" do filename = 'foobar.rhtml' erb = ERB.new('<% if true %>') # will raise SyntaxError erb.filename = filename - lambda { + -> { begin erb.result(binding) rescue Exception => e @ex = e raise e end - }.should raise_error(SyntaxError) + }.should.raise(SyntaxError) expected = filename @ex.message =~ /^(.*?):(\d+): / @@ -23,14 +23,14 @@ describe "ERB#filename" do it "uses '(erb)' as filename when filename is not set" do erb = ERB.new('<% if true %>') # will raise SyntaxError - lambda { + -> { begin erb.result(binding) rescue Exception => e @ex = e raise e end - }.should raise_error(SyntaxError) + }.should.raise(SyntaxError) expected = '(erb)' @ex.message =~ /^(.*?):(\d+): / diff --git a/spec/ruby/library/erb/fixtures/classes.rb b/spec/ruby/library/erb/fixtures/classes.rb new file mode 100644 index 0000000000..e07a6ed68d --- /dev/null +++ b/spec/ruby/library/erb/fixtures/classes.rb @@ -0,0 +1,5 @@ +module ERBSpecs + def self.new_erb(input, trim_mode: nil) + ERB.new(input, trim_mode: trim_mode) + end +end diff --git a/spec/ruby/library/erb/new_spec.rb b/spec/ruby/library/erb/new_spec.rb index f141f1c00e..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,7 +68,7 @@ END </ul> END - ERB.new(input, nil, '-').result.should == expected + ERBSpecs.new_erb(input, trim_mode: '-').result.should == expected end @@ -74,24 +81,24 @@ END </p> END - lambda { - ERB.new(input, nil, '-').result - }.should raise_error(SyntaxError) + -> { + 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 @@ -106,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 @@ -123,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 diff --git a/spec/ruby/library/erb/result_spec.rb b/spec/ruby/library/erb/result_spec.rb index d79584b221..84333031ec 100644 --- a/spec/ruby/library/erb/result_spec.rb +++ b/spec/ruby/library/erb/result_spec.rb @@ -1,5 +1,5 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#result" do @@ -41,9 +41,9 @@ END it "is not able to h() or u() unless including ERB::Util" do input = "<%=h '<>' %>" - lambda { + -> { ERB.new(input).result() - }.should raise_error(NameError) + }.should.raise(NameError) end @@ -79,8 +79,8 @@ END expected = '123' myerb2.new.main1().should == expected - lambda { + -> { myerb2.new.main2() - }.should raise_error(NameError) + }.should.raise(NameError) end end diff --git a/spec/ruby/library/erb/run_spec.rb b/spec/ruby/library/erb/run_spec.rb index 6ad3808a16..d81d534087 100644 --- a/spec/ruby/library/erb/run_spec.rb +++ b/spec/ruby/library/erb/run_spec.rb @@ -1,12 +1,12 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#run" do # TODO: what is this? why does it not use # lambda { ... }.should output def _steal_stdout orig = $stdout - s = '' + s = +'' def s.write(arg); self << arg.to_s; end $stdout = s begin @@ -52,9 +52,9 @@ END it "is not able to h() or u() unless including ERB::Util" do input = "<%=h '<>' %>" - lambda { + -> { _steal_stdout { ERB.new(input).run() } - }.should raise_error(NameError) + }.should.raise(NameError) end it "is able to h() or u() if ERB::Util is included" do @@ -89,9 +89,8 @@ END actual = _steal_stdout { myerb2.new.main1() } actual.should == expected - lambda { + -> { _steal_stdout { myerb2.new.main2() } - }.should raise_error(NameError) + }.should.raise(NameError) end end - diff --git a/spec/ruby/library/erb/src_spec.rb b/spec/ruby/library/erb/src_spec.rb index cf5b67dcbf..fc11b7e4b7 100644 --- a/spec/ruby/library/erb/src_spec.rb +++ b/spec/ruby/library/erb/src_spec.rb @@ -1,5 +1,5 @@ require 'erb' -require File.expand_path('../../../spec_helper', __FILE__) +require_relative '../../spec_helper' describe "ERB#src" do diff --git a/spec/ruby/library/erb/util/h_spec.rb b/spec/ruby/library/erb/util/h_spec.rb index ba36574433..6de79cfd92 100644 --- a/spec/ruby/library/erb/util/h_spec.rb +++ b/spec/ruby/library/erb/util/h_spec.rb @@ -1,6 +1,6 @@ require 'erb' -require File.expand_path('../../../../spec_helper', __FILE__) -require File.expand_path('../shared/html_escape', __FILE__) +require_relative '../../../spec_helper' +require_relative 'shared/html_escape' describe "ERB::Util.h" do it_behaves_like :erb_util_html_escape, :h diff --git a/spec/ruby/library/erb/util/html_escape_spec.rb b/spec/ruby/library/erb/util/html_escape_spec.rb index 9bc9359f2c..1c15fb8791 100644 --- a/spec/ruby/library/erb/util/html_escape_spec.rb +++ b/spec/ruby/library/erb/util/html_escape_spec.rb @@ -1,8 +1,7 @@ require 'erb' -require File.expand_path('../../../../spec_helper', __FILE__) -require File.expand_path('../shared/html_escape', __FILE__) +require_relative '../../../spec_helper' +require_relative 'shared/html_escape' describe "ERB::Util.html_escape" do it_behaves_like :erb_util_html_escape, :html_escape end - diff --git a/spec/ruby/library/erb/util/shared/url_encode.rb b/spec/ruby/library/erb/util/shared/url_encode.rb index 5ac6215523..34009c4903 100644 --- a/spec/ruby/library/erb/util/shared/url_encode.rb +++ b/spec/ruby/library/erb/util/shared/url_encode.rb @@ -6,21 +6,13 @@ describe :erb_util_url_encode, shared: true do ERB::Util.__send__(@method, input).should == expected end - ruby_version_is ""..."2.5" do - it "escapes tilde" do - ERB::Util.__send__(@method, "~").should == "%7E" - end - end - - ruby_version_is "2.5" do - it "does not escape tilde" do - ERB::Util.__send__(@method, "~").should == "~" - end + it "does not escape tilde" do + ERB::Util.__send__(@method, "~").should == "~" end it "encode unicode string" do - input = "http://ja.wikipedia.org/wiki/\343\203\255\343\203\240\343\202\271\343\202\253\343\203\273\343\203\221\343\203\255\343\203\273\343\202\246\343\203\253\343\203\273\343\203\251\343\203\224\343\203\245\343\202\277" - expected = 'http%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%83%AD%E3%83%A0%E3%82%B9%E3%82%AB%E3%83%BB%E3%83%91%E3%83%AD%E3%83%BB%E3%82%A6%E3%83%AB%E3%83%BB%E3%83%A9%E3%83%94%E3%83%A5%E3%82%BF' + input = "https://ja.wikipedia.org/wiki/\343\203\255\343\203\240\343\202\271\343\202\253\343\203\273\343\203\221\343\203\255\343\203\273\343\202\246\343\203\253\343\203\273\343\203\251\343\203\224\343\203\245\343\202\277" + expected = 'https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%83%AD%E3%83%A0%E3%82%B9%E3%82%AB%E3%83%BB%E3%83%91%E3%83%AD%E3%83%BB%E3%82%A6%E3%83%AB%E3%83%BB%E3%83%A9%E3%83%94%E3%83%A5%E3%82%BF' ERB::Util.__send__(@method, input).should == expected end diff --git a/spec/ruby/library/erb/util/u_spec.rb b/spec/ruby/library/erb/util/u_spec.rb index 9200244c8e..2a08451031 100644 --- a/spec/ruby/library/erb/util/u_spec.rb +++ b/spec/ruby/library/erb/util/u_spec.rb @@ -1,8 +1,7 @@ require 'erb' -require File.expand_path('../../../../spec_helper', __FILE__) -require File.expand_path('../shared/url_encode', __FILE__) +require_relative '../../../spec_helper' +require_relative 'shared/url_encode' describe "ERB::Util.u" do it_behaves_like :erb_util_url_encode, :u end - diff --git a/spec/ruby/library/erb/util/url_encode_spec.rb b/spec/ruby/library/erb/util/url_encode_spec.rb index 303a2e3cd7..5569a1cc64 100644 --- a/spec/ruby/library/erb/util/url_encode_spec.rb +++ b/spec/ruby/library/erb/util/url_encode_spec.rb @@ -1,6 +1,6 @@ require 'erb' -require File.expand_path('../../../../spec_helper', __FILE__) -require File.expand_path('../shared/url_encode', __FILE__) +require_relative '../../../spec_helper' +require_relative 'shared/url_encode' describe "ERB::Util.url_encode" do it_behaves_like :erb_util_url_encode, :url_encode |
