aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/template/erb
diff options
context:
space:
mode:
authorArtiom Di <kron82@gmail.com>2012-07-11 16:36:41 +0300
committerArtiom Di <kron82@gmail.com>2012-08-07 12:37:56 +0300
commite82ffeaa0a7a8fe8ba94dc0736c15d05b5746abc (patch)
treeb2f67b3e376d0cd0d9c0d7f376f29e195a9e5b1a /actionpack/test/template/erb
parent9cd1f697f1b4dded0f18e13c7ae12c7bd2dab1c0 (diff)
downloadrails-e82ffeaa0a7a8fe8ba94dc0736c15d05b5746abc.tar.gz
rails-e82ffeaa0a7a8fe8ba94dc0736c15d05b5746abc.tar.bz2
rails-e82ffeaa0a7a8fe8ba94dc0736c15d05b5746abc.zip
Restoring the '%' trim mode for ERb templates, allowing for a leading percent sign on a line to indicate non-inserted Ruby code.
Diffstat (limited to 'actionpack/test/template/erb')
-rw-r--r--actionpack/test/template/erb/handlers_test.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/actionpack/test/template/erb/handlers_test.rb b/actionpack/test/template/erb/handlers_test.rb
new file mode 100644
index 0000000000..7cd9c7fbcb
--- /dev/null
+++ b/actionpack/test/template/erb/handlers_test.rb
@@ -0,0 +1,54 @@
+require "abstract_unit"
+
+class HandlersTest < ActiveSupport::TestCase
+ HANDLER = ActionView::Template::Handlers::ERB
+ Template = Struct.new(:source)
+
+ extend ActiveSupport::Testing::Declarative
+
+ test "content is not trimmed without a trim mode" do
+ with_erb_trim_mode nil do
+ assert_equal(" \ntest", render(" <% 'IGNORED' %> \ntest"))
+ end
+ end
+
+ test "content around tags is trimmed if the trim mode includes a dash" do
+ with_erb_trim_mode '-' do
+ assert_equal("test", render(" <% 'IGNORED' %> \ntest"))
+ end
+ end
+
+ test "percent lines are normal content without a trim mode" do
+ with_erb_trim_mode nil do
+ assert_equal( "% if false\noops\n% end\n",
+ render("% if false\noops\n% end\n") )
+ end
+ end
+
+ test "percent lines count as ruby if trim mode includes a percent" do
+ with_erb_trim_mode "%" do
+ assert_equal("", render("% if false\noops\n% end\n"))
+ end
+ end
+
+ test "both trim modes can be used at the same time" do
+ with_erb_trim_mode "%-" do
+ assert_equal( "test", render( "% if false\noops\n% end\n" +
+ " <% 'IGNORED' %> \ntest" ) )
+ end
+ end
+
+ private
+
+ def with_erb_trim_mode(mode)
+ @old_erb_trim_mode = HANDLER.erb_trim_mode
+ HANDLER.erb_trim_mode = mode
+ yield
+ ensure
+ HANDLER.erb_trim_mode = @old_erb_trim_mode
+ end
+
+ def render(template)
+ eval("output_buffer = nil; " + HANDLER.call(Template.new(template)))
+ end
+end