diff options
author | Lucas Uyezu <lucas.uyezu@gmail.com> | 2012-08-02 21:23:06 -0300 |
---|---|---|
committer | Lucas Uyezu <lucas.uyezu@gmail.com> | 2012-08-13 18:49:47 -0300 |
commit | 6446e84c1a0d72ecdba1046c3e15b4467eae9e5b (patch) | |
tree | 81293ce71ce3f5038257f5d426a44265c61104c4 | |
parent | fa736e69a197522ae3af3d3e6394cdc1eb1da228 (diff) | |
download | rails-6446e84c1a0d72ecdba1046c3e15b4467eae9e5b.tar.gz rails-6446e84c1a0d72ecdba1046c3e15b4467eae9e5b.tar.bz2 rails-6446e84c1a0d72ecdba1046c3e15b4467eae9e5b.zip |
Indentation should consider line number character count.
-rw-r--r-- | actionpack/lib/action_view/template/error.rb | 4 | ||||
-rw-r--r-- | actionpack/test/fixtures/test/_raise_indentation.html.erb | 13 | ||||
-rw-r--r-- | actionpack/test/template/render_test.rb | 9 |
3 files changed, 24 insertions, 2 deletions
diff --git a/actionpack/lib/action_view/template/error.rb b/actionpack/lib/action_view/template/error.rb index d8258f7b11..f2bef4bded 100644 --- a/actionpack/lib/action_view/template/error.rb +++ b/actionpack/lib/action_view/template/error.rb @@ -84,13 +84,13 @@ module ActionView start_on_line = [ num - SOURCE_CODE_RADIUS - 1, 0 ].max end_on_line = [ num + SOURCE_CODE_RADIUS - 1, source_code.length].min - indent = ' ' * indentation + indent = end_on_line.to_s.size + indentation line_counter = start_on_line return unless source_code = source_code[start_on_line..end_on_line] source_code.sum do |line| line_counter += 1 - "#{indent}#{line_counter}: #{line}\n" + "%#{indent}s: %s\n" % [line_counter, line] end end diff --git a/actionpack/test/fixtures/test/_raise_indentation.html.erb b/actionpack/test/fixtures/test/_raise_indentation.html.erb new file mode 100644 index 0000000000..f9a93728fe --- /dev/null +++ b/actionpack/test/fixtures/test/_raise_indentation.html.erb @@ -0,0 +1,13 @@ +<p>First paragraph</p> +<p>Second paragraph</p> +<p>Third paragraph</p> +<p>Fourth paragraph</p> +<p>Fifth paragraph</p> +<p>Sixth paragraph</p> +<p>Seventh paragraph</p> +<p>Eight paragraph</p> +<p>Ninth paragraph</p> +<p>Tenth paragraph</p> +<%= raise "error here!" %> +<p>Eleventh paragraph</p> +<p>Twelfth paragraph</p>
\ No newline at end of file diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb index 164b8b9fa1..b26354e7cc 100644 --- a/actionpack/test/template/render_test.rb +++ b/actionpack/test/template/render_test.rb @@ -203,6 +203,15 @@ module RenderTestCases assert_equal File.expand_path("#{FIXTURE_LOAD_PATH}/test/_raise.html.erb"), e.file_name end + def test_render_error_indentation + e = assert_raises(ActionView::Template::Error) { @view.render(:partial => "test/raise_indentation") } + error_lines = e.annoted_source_code.split("\n") + assert_match %r!error\shere!, e.message + assert_equal "11", e.line_number + assert_equal " 9: <p>Ninth paragraph</p>", error_lines.second + assert_equal " 10: <p>Tenth paragraph</p>", error_lines.third + end + def test_render_sub_template_with_errors e = assert_raises(ActionView::Template::Error) { @view.render(:template => "test/sub_template_raise") } assert_match %r!method.*doesnt_exist!, e.message |