summaryrefslogtreecommitdiff
path: root/spec/ruby/library/erb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/erb')
-rw-r--r--spec/ruby/library/erb/def_class_spec.rb4
-rw-r--r--spec/ruby/library/erb/def_method_spec.rb2
-rw-r--r--spec/ruby/library/erb/def_module_spec.rb5
-rw-r--r--spec/ruby/library/erb/defmethod/def_erb_method_spec.rb7
-rw-r--r--spec/ruby/library/erb/filename_spec.rb10
-rw-r--r--spec/ruby/library/erb/fixtures/classes.rb5
-rw-r--r--spec/ruby/library/erb/new_spec.rb59
-rw-r--r--spec/ruby/library/erb/result_spec.rb10
-rw-r--r--spec/ruby/library/erb/run_spec.rb13
-rw-r--r--spec/ruby/library/erb/src_spec.rb2
-rw-r--r--spec/ruby/library/erb/util/h_spec.rb4
-rw-r--r--spec/ruby/library/erb/util/html_escape_spec.rb5
-rw-r--r--spec/ruby/library/erb/util/shared/url_encode.rb16
-rw-r--r--spec/ruby/library/erb/util/u_spec.rb5
-rw-r--r--spec/ruby/library/erb/util/url_encode_spec.rb4
15 files changed, 89 insertions, 62 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 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
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