From: Jean-Philippe Lang Date: Sat, 2 Jul 2011 11:42:46 +0000 (+0000) Subject: Normalize issue description EOLs do prevent false journal details (#8712). X-Git-Tag: 1.3.0~1756 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=66f026aa7818c72c9a5761d91f356ff292156eef;p=redmine.git Normalize issue description EOLs do prevent false journal details (#8712). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6149 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/issue.rb b/app/models/issue.rb index 5fe0d0517..79c491547 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -227,6 +227,13 @@ class Issue < ActiveRecord::Base @custom_field_values = nil result end + + def description=(arg) + if arg.is_a?(String) + arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n") + end + write_attribute(:description, arg) + end # Overrides attributes= so that tracker_id gets assigned first def attributes_with_tracker_first=(new_attributes, *args) diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index 92f604e52..b19ddaa85 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -738,7 +738,7 @@ class IssueTest < ActiveSupport::TestCase IssueCustomField.delete_all Issue.update_all("description = NULL", "id=1") - i = Issue.first + i = Issue.find(1) i.init_journal(User.find(2)) i.subject = "blank description" i.description = "\r\n" @@ -749,6 +749,11 @@ class IssueTest < ActiveSupport::TestCase end end end + + def test_description_eol_should_be_normalized + i = Issue.new(:description => "CR \r LF \n CRLF \r\n") + assert_equal "CR \r\n LF \r\n CRLF \r\n", i.description + end def test_saving_twice_should_not_duplicate_journal_details i = Issue.find(:first)