Update Vendored Erubis to 2.6.6
This commit is contained in:
parent
c18c2f988d
commit
39c2138f88
300 changed files with 207 additions and 171 deletions
597
vendor/plugins/erubis/test/test-enhancers.rb
vendored
Normal file
597
vendor/plugins/erubis/test/test-enhancers.rb
vendored
Normal file
|
@ -0,0 +1,597 @@
|
|||
##
|
||||
## $Release: 2.6.6 $
|
||||
## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
|
||||
##
|
||||
|
||||
require "#{File.dirname(__FILE__)}/test.rb"
|
||||
|
||||
require 'stringio'
|
||||
|
||||
require 'erubis'
|
||||
require 'erubis/engine/enhanced'
|
||||
require 'erubis/engine/optimized'
|
||||
|
||||
|
||||
class EnhancersTest < Test::Unit::TestCase
|
||||
|
||||
testdata_list = load_yaml_datafile(__FILE__)
|
||||
define_testmethods(testdata_list)
|
||||
|
||||
|
||||
def _test()
|
||||
@src.gsub!(/\^/, ' ')
|
||||
@output.gsub!(/\^/, ' ') if @output.is_a?(String)
|
||||
if @class
|
||||
k = Erubis
|
||||
@class.split('::').each do |name| k = k.const_get(name) end
|
||||
@klass = k
|
||||
else
|
||||
@klass = Erubis::Eruby
|
||||
end
|
||||
@options ||= {}
|
||||
@chomp.each do |target|
|
||||
case target
|
||||
when 'src' ; @src.chomp!
|
||||
when 'input' ; @input.chomp!
|
||||
when 'expected' ; @expected.chomp!
|
||||
else
|
||||
raise "#{@name}: invalid chomp value: #{@chomp.inspect}"
|
||||
end
|
||||
end if @chomp
|
||||
|
||||
if @testopt == 'load_file'
|
||||
filename = "tmp.#{@name}.eruby"
|
||||
begin
|
||||
File.open(filename, 'w') { |f| f.write(@input) }
|
||||
eruby = @klass.load_file(filename, @options)
|
||||
ensure
|
||||
cachename = filename + '.cache'
|
||||
File.unlink(cachename) if test(?f, cachename)
|
||||
File.unlink(filename) if test(?f, filename)
|
||||
end
|
||||
else
|
||||
#if @klass == Erubis::TinyEruby
|
||||
# eruby = @klass.new(@input)
|
||||
#else
|
||||
eruby = @klass.new(@input, @options)
|
||||
#end
|
||||
end
|
||||
assert_text_equal(@src, eruby.src)
|
||||
|
||||
return if @testopt == 'skip_output'
|
||||
|
||||
list = ['<aaa>', 'b&b', '"ccc"']
|
||||
context = @testopt == 'context' ? Erubis::Context.new : {}
|
||||
context[:list] = list
|
||||
|
||||
case @testopt
|
||||
when /\Aeval\(/
|
||||
eval eruby.src
|
||||
actual = eval @testopt
|
||||
assert_text_equal(@output, actual)
|
||||
when 'stdout', 'print'
|
||||
begin
|
||||
orig = $stdout
|
||||
$stdout = stringio = StringIO.new
|
||||
#actual = eruby.evaluate(context)
|
||||
actual = eruby.result(context)
|
||||
ensure
|
||||
$stdout = orig
|
||||
end
|
||||
if @testopt == 'stdout'
|
||||
assert_equal("", actual)
|
||||
else
|
||||
assert_nil(actual)
|
||||
end
|
||||
assert_text_equal(@output, stringio.string)
|
||||
when 'evaluate', 'context'
|
||||
actual = eruby.evaluate(context)
|
||||
assert_text_equal(@output, actual)
|
||||
when 'binding'
|
||||
actual = eruby.result(binding())
|
||||
assert_text_equal(@output, actual)
|
||||
else
|
||||
actual = eruby.result(context)
|
||||
assert_text_equal(@output, actual)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
self.post_definition()
|
||||
|
||||
end
|
||||
|
||||
__END__
|
||||
|
||||
##
|
||||
- name: basic1
|
||||
class: Eruby
|
||||
input: &basic1_input|
|
||||
<ul>
|
||||
<% for item in list %>
|
||||
<li><%= item %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
src: &basic1_src|
|
||||
_buf = ''; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.to_s
|
||||
output: &basic1_output|
|
||||
<ul>
|
||||
<li><aaa></li>
|
||||
<li>b&b</li>
|
||||
<li>"ccc"</li>
|
||||
</ul>
|
||||
|
||||
- name: xml1
|
||||
class: XmlEruby
|
||||
input: |
|
||||
<pre>
|
||||
<% for item in list %>
|
||||
<%= item %>
|
||||
<%== item %>
|
||||
<% end %>
|
||||
</pre>
|
||||
src: |
|
||||
_buf = ''; _buf << '<pre>
|
||||
'; for item in list
|
||||
_buf << ' '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
|
||||
'; _buf << ' '; _buf << ( item ).to_s; _buf << '
|
||||
'; end
|
||||
_buf << '</pre>
|
||||
';
|
||||
_buf.to_s
|
||||
output: |
|
||||
<pre>
|
||||
<aaa>
|
||||
<aaa>
|
||||
b&b
|
||||
b&b
|
||||
"ccc"
|
||||
"ccc"
|
||||
</pre>
|
||||
|
||||
##
|
||||
- name: xml2
|
||||
class: XmlEruby
|
||||
testopt: skip_output
|
||||
input: |
|
||||
<% for item in list %>
|
||||
<%= item["var#{n}"] %>
|
||||
<%== item["var#{n}"] %>
|
||||
<%=== item["var#{n}"] %>
|
||||
<%==== item["var#{n}"] %>
|
||||
<% end %>
|
||||
src: |
|
||||
_buf = ''; for item in list
|
||||
_buf << ' '; _buf << Erubis::XmlHelper.escape_xml( item["var#{n}"] ); _buf << '
|
||||
'; _buf << ' '; _buf << ( item["var#{n}"] ).to_s; _buf << '
|
||||
'; _buf << ' '; $stderr.puts("*** debug: item[\"var\#{n}\"]=#{(item["var#{n}"]).inspect}"); _buf << '
|
||||
'; _buf << ' '; _buf << '
|
||||
'; end
|
||||
_buf.to_s
|
||||
output: |
|
||||
|
||||
##
|
||||
- name: printout1
|
||||
class: PrintOutEruby
|
||||
testopt: print
|
||||
input: *basic1_input
|
||||
src: |4
|
||||
print '<ul>
|
||||
'; for item in list
|
||||
print ' <li>'; print(( item ).to_s); print '</li>
|
||||
'; end
|
||||
print '</ul>
|
||||
';
|
||||
output: *basic1_output
|
||||
|
||||
##
|
||||
- name: printenabled1
|
||||
class: PrintEnabledEruby
|
||||
input: &printenabled1_input|
|
||||
<ul>
|
||||
<% for item in list %>
|
||||
<li><% print item %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
src: |
|
||||
@_buf = _buf = ''; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; print item ; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.to_s
|
||||
output: *basic1_output
|
||||
# <ul>
|
||||
# <li><aaa></li>
|
||||
# <li>b&b</li>
|
||||
# <li>"ccc"</li>
|
||||
# </ul>
|
||||
|
||||
##
|
||||
- name: stdout1
|
||||
class: StdoutEruby
|
||||
testopt: stdout
|
||||
input: *basic1_input
|
||||
# <ul>
|
||||
# <% for item in list %>
|
||||
# <li><%= item %></li>
|
||||
# <% end %>
|
||||
# </ul>
|
||||
src: |
|
||||
_buf = $stdout; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
''
|
||||
output: *basic1_output
|
||||
# <ul>
|
||||
# <li><aaa></li>
|
||||
# <li>b&b</li>
|
||||
# <li>"ccc"</li>
|
||||
# </ul>
|
||||
|
||||
##
|
||||
- name: array1
|
||||
class: ArrayEruby
|
||||
input: |
|
||||
<ul>
|
||||
<% for item in list %>
|
||||
<li><%= item %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
src: |
|
||||
_buf = []; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf
|
||||
output:
|
||||
- "<ul>\n"
|
||||
- " <li>"
|
||||
- "<aaa>"
|
||||
- "</li>\n"
|
||||
- " <li>"
|
||||
- "b&b"
|
||||
- "</li>\n"
|
||||
- " <li>"
|
||||
- "\"ccc\""
|
||||
- "</li>\n"
|
||||
- "</ul>\n"
|
||||
|
||||
##
|
||||
- name: arraybuffer1
|
||||
class: ArrayBufferEruby
|
||||
input: *basic1_input
|
||||
src: |
|
||||
_buf = []; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.join
|
||||
output: *basic1_output
|
||||
|
||||
- name: stringbuffer1
|
||||
class: StringBufferEruby
|
||||
input: *basic1_input
|
||||
# <ul>
|
||||
# <% for item in list %>
|
||||
# <li><%= item %></li>
|
||||
# <% end %>
|
||||
# </ul>
|
||||
src: |
|
||||
_buf = ''; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.to_s
|
||||
output: *basic1_output
|
||||
# <ul>
|
||||
# <li><aaa></li>
|
||||
# <li>b&b</li>
|
||||
# <li>"ccc"</li>
|
||||
# </ul>
|
||||
|
||||
##
|
||||
- name: erbout1
|
||||
class: ErboutEruby
|
||||
input: *basic1_input
|
||||
src: |
|
||||
_erbout = _buf = ''; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.to_s
|
||||
output: *basic1_output
|
||||
|
||||
##
|
||||
- name: stringio1
|
||||
class: StringIOEruby
|
||||
input: *basic1_input
|
||||
src: |
|
||||
_buf = StringIO.new; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.string
|
||||
output: *basic1_output
|
||||
|
||||
##
|
||||
- name: notext1
|
||||
class: NoTextEruby
|
||||
input: *basic1_input
|
||||
src: |
|
||||
_buf = '';
|
||||
for item in list
|
||||
_buf << ( item ).to_s;
|
||||
end
|
||||
|
||||
_buf.to_s
|
||||
output: '<aaa>b&b"ccc"'
|
||||
|
||||
|
||||
##
|
||||
- name: nocode1
|
||||
class: NoCodeEruby
|
||||
testopt: skip_output
|
||||
input: *basic1_input
|
||||
src: |
|
||||
<ul>
|
||||
|
||||
<li></li>
|
||||
|
||||
</ul>
|
||||
output:
|
||||
|
||||
##
|
||||
- name: simplified
|
||||
class: SimplifiedEruby
|
||||
input: |
|
||||
<ul>
|
||||
<% for item in list %>
|
||||
<li>
|
||||
<%= item %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
src: |
|
||||
_buf = ''; _buf << '<ul>
|
||||
'; for item in list ; _buf << '
|
||||
<li>
|
||||
'; _buf << ( item ).to_s; _buf << '
|
||||
</li>
|
||||
'; end ; _buf << '
|
||||
</ul>
|
||||
';
|
||||
_buf.to_s
|
||||
output: |
|
||||
<ul>
|
||||
^
|
||||
<li>
|
||||
<aaa>
|
||||
</li>
|
||||
^
|
||||
<li>
|
||||
b&b
|
||||
</li>
|
||||
^
|
||||
<li>
|
||||
"ccc"
|
||||
</li>
|
||||
^
|
||||
</ul>
|
||||
|
||||
##
|
||||
- name: bipattern1
|
||||
class: BiPatternEruby
|
||||
#options: { :bipattern : '\[= =\]' }
|
||||
input: |
|
||||
<% for item in list %>
|
||||
<%= item %> % <%== item %>
|
||||
[= item =] = [== item =]
|
||||
<% end %>
|
||||
src: |
|
||||
_buf = ''; for item in list
|
||||
_buf << ' '; _buf << ( item ).to_s; _buf << ' % '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
|
||||
'; _buf << ' '; _buf << ( item ).to_s; _buf << ' = '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '
|
||||
'; end
|
||||
_buf.to_s
|
||||
output: |4
|
||||
<aaa> % <aaa>
|
||||
<aaa> = <aaa>
|
||||
b&b % b&b
|
||||
b&b = b&b
|
||||
"ccc" % "ccc"
|
||||
"ccc" = "ccc"
|
||||
|
||||
##
|
||||
- name: bipattern2
|
||||
class: BiPatternEruby
|
||||
options: { :bipattern: '\$\{ \}' }
|
||||
input: |
|
||||
<% for item in list %>
|
||||
<%=item%> % <%==item%>
|
||||
${item} = ${=item}
|
||||
<% end %>
|
||||
src: |
|
||||
_buf = ''; for item in list
|
||||
_buf << ' '; _buf << (item).to_s; _buf << ' % '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '
|
||||
'; _buf << ' '; _buf << (item).to_s; _buf << ' = '; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '
|
||||
'; end
|
||||
_buf.to_s
|
||||
output: |4
|
||||
<aaa> % <aaa>
|
||||
<aaa> = <aaa>
|
||||
b&b % b&b
|
||||
b&b = b&b
|
||||
"ccc" % "ccc"
|
||||
"ccc" = "ccc"
|
||||
|
||||
##
|
||||
- name: percentline1
|
||||
class: PercentLineEruby
|
||||
options:
|
||||
input: |
|
||||
<table>
|
||||
% for item in list
|
||||
<tr>
|
||||
<td><%= item %></td>
|
||||
<td><%== item %></td>
|
||||
</tr>
|
||||
% end
|
||||
</table>
|
||||
<pre>
|
||||
%% double percent
|
||||
% spaced percent
|
||||
</pre>
|
||||
src: |
|
||||
_buf = ''; _buf << '<table>
|
||||
'; for item in list
|
||||
_buf << ' <tr>
|
||||
<td>'; _buf << ( item ).to_s; _buf << '</td>
|
||||
<td>'; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</td>
|
||||
</tr>
|
||||
'; end
|
||||
_buf << '</table>
|
||||
<pre>
|
||||
% double percent
|
||||
% spaced percent
|
||||
</pre>
|
||||
';
|
||||
_buf.to_s
|
||||
output: |
|
||||
<table>
|
||||
<tr>
|
||||
<td><aaa></td>
|
||||
<td><aaa></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>b&b</td>
|
||||
<td>b&b</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>"ccc"</td>
|
||||
<td>"ccc"</td>
|
||||
</tr>
|
||||
</table>
|
||||
<pre>
|
||||
% double percent
|
||||
% spaced percent
|
||||
</pre>
|
||||
|
||||
##
|
||||
- name: headerfooter1
|
||||
class: HeaderFooterEruby
|
||||
options:
|
||||
testopt: eval('ordered_list(list)')
|
||||
input: |
|
||||
<!--#header:
|
||||
def ordered_list(list)
|
||||
#-->
|
||||
<ol>
|
||||
<% for item in list %>
|
||||
<li><%==item%></li>
|
||||
<% end %>
|
||||
</ol>
|
||||
<!--#footer: end #-->
|
||||
src: |4
|
||||
|
||||
def ordered_list(list)
|
||||
|
||||
_buf = ''; _buf << '<ol>
|
||||
'; for item in list
|
||||
_buf << ' <li>'; _buf << Erubis::XmlHelper.escape_xml(item); _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ol>
|
||||
';
|
||||
_buf.to_s
|
||||
end
|
||||
output: |
|
||||
<ol>
|
||||
<li><aaa></li>
|
||||
<li>b&b</li>
|
||||
<li>"ccc"</li>
|
||||
</ol>
|
||||
|
||||
##
|
||||
- name: deleteindent1
|
||||
class: DeleteIndentEruby
|
||||
options:
|
||||
testopt:
|
||||
input: *basic1_input
|
||||
src: |
|
||||
_buf = ''; _buf << '<ul>
|
||||
'; for item in list
|
||||
_buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
|
||||
'; end
|
||||
_buf << '</ul>
|
||||
';
|
||||
_buf.to_s
|
||||
output: |
|
||||
<ul>
|
||||
<li><aaa></li>
|
||||
<li>b&b</li>
|
||||
<li>"ccc"</li>
|
||||
</ul>
|
||||
|
||||
##
|
||||
- name: interpolation1
|
||||
class: InterpolationEruby
|
||||
options:
|
||||
testopt:
|
||||
input: *basic1_input
|
||||
src: |
|
||||
_buf = ''; _buf << %Q`<ul>\n`
|
||||
for item in list
|
||||
_buf << %Q` <li>#{ item }</li>\n`
|
||||
end
|
||||
_buf << %Q`</ul>\n`
|
||||
_buf.to_s
|
||||
output: *basic1_output
|
||||
|
||||
- name: interpolation2
|
||||
desc: sharp, back-quote, and backslash should be escaped, but other quotes should not be escaped (reported by andrewj)
|
||||
class: InterpolationEruby
|
||||
options:
|
||||
testopt:
|
||||
input: |
|
||||
<p>`back-quote`</p>
|
||||
<p><%= `echo back-tick operator` %></p>
|
||||
<p>#{sharp}</p>
|
||||
<p>'single quote'</p>
|
||||
<p>"double quote"</p>
|
||||
<p>backslash\n\t</p>
|
||||
src: |
|
||||
_buf = ''; _buf << %Q`<p>\`back-quote\`</p>
|
||||
<p>#{ `echo back-tick operator` }</p>
|
||||
<p>\#{sharp}</p>
|
||||
<p>'single quote'</p>
|
||||
<p>"double quote"</p>
|
||||
<p>backslash\\n\\t</p>\n`
|
||||
_buf.to_s
|
||||
output: |
|
||||
<p>`back-quote`</p>
|
||||
<p>back-tick operator
|
||||
</p>
|
||||
<p>#{sharp}</p>
|
||||
<p>'single quote'</p>
|
||||
<p>"double quote"</p>
|
||||
<p>backslash\n\t</p>
|
Loading…
Add table
Add a link
Reference in a new issue