Sha256: a3713156d288e642e6de78f75535715d71f2e73894dadd6028c7ab1cfeffc18e
Contents?: true
Size: 1.87 KB
Versions: 5
Compression:
Stored size: 1.87 KB
Contents
require 'erb' describe "ERB#run" do # TODO: what is this? why does it not use # lambda { ... }.should output def _steal_stdout orig = $stdout s = '' def s.write(arg); self << arg.to_s; end $stdout = s begin yield ensure $stdout = orig end return s end it "print the result of compiled ruby code" do input = <<END <ul> <% for item in list %> <li><%= item %> <% end %> </ul> END expected = <<END <ul> <li>AAA <li>BBB <li>CCC </ul> END erb = ERB.new(input) list = %w[AAA BBB CCC] actual = _steal_stdout { erb.run(binding) } actual.should == expected end it "share local variables" do input = "<% var = 456 %>" expected = 456 var = 123 _steal_stdout { ERB.new(input).run(binding) } var.should == expected 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) end it "is able to h() or u() if ERB::Util is included" do class MyERB1 include ERB::Util def main input = "<%=h '<>' %>" ERB.new(input).run(binding) end end expected = '<>' actual = _steal_stdout { MyERB1.new.main() } actual.should == expected end it "use TOPLEVEL_BINDING if binding is not passed" do class MyERB2 include ERB::Util def main1 #input = "<%= binding.to_s %>" input = "<%= _xxx_var_ %>" return ERB.new(input).run() end def main2 input = "<%=h '<>' %>" return ERB.new(input).run() end end eval '_xxx_var_ = 123', TOPLEVEL_BINDING expected = '123' actual = _steal_stdout { MyERB2.new.main1() } actual.should == expected lambda { _steal_stdout { MyERB2.new.main2() } }.should raise_error(NameError) end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
rubysl-erb-2.0.2 | spec/run_spec.rb |
rubysl-erb-1.0.1 | spec/run_spec.rb |
rubysl-erb-1.0.0 | spec/run_spec.rb |
rubysl-erb-2.0.1 | spec/run_spec.rb |
rubysl-erb-2.0.0 | spec/run_spec.rb |