diff --git a/lib/redmine/syntax_highlighting.rb b/lib/redmine/syntax_highlighting.rb index e2d47f277..866456bf0 100644 --- a/lib/redmine/syntax_highlighting.rb +++ b/lib/redmine/syntax_highlighting.rb @@ -76,6 +76,13 @@ module Redmine # Highlights +text+ as the content of +filename+ # Should not return line numbers nor outer pre tag def highlight_by_filename(text, filename) + # TODO: Delete the following workaround for #30434 and + # test_syntax_highlight_should_normalize_line_endings in + # application_helper_test.rb when Rouge is improved to + # handle CRLF properly. + # See also: https://github.com/jneen/rouge/pull/1078 + text = text.gsub(/\r\n?/, "\n") + lexer =::Rouge::Lexer.guess_by_filename(filename) formatter = ::Rouge::Formatters::HTML.new ::Rouge.highlight(text, lexer, CustomHTMLLinewise.new(formatter)) diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb index 5561e2f40..48304af25 100644 --- a/test/helpers/application_helper_test.rb +++ b/test/helpers/application_helper_test.rb @@ -1123,6 +1123,10 @@ EXPECTED end end + def test_syntax_highlight_should_normalize_line_endings + assert_equal "line 1\nline 2\n", syntax_highlight("test.txt", "line 1\rline 2\r\n") + end + def test_to_path_param assert_equal 'test1/test2', to_path_param('test1/test2') assert_equal 'test1/test2', to_path_param('/test1/test2/')