diff --git a/app/models/issue.rb b/app/models/issue.rb index 4d7e95d0..8feafe4d 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -280,6 +280,13 @@ class Issue < ActiveRecord::Base end end + # Bug #501: browsers might swap the line endings causing a Journal. + if attrs.has_key?('description') && attrs['description'].present? + if attrs['description'].gsub(/\r\n?/,"\n") == self.description + attrs.delete('description') + end + end + self.attributes = attrs end diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index b34e848a..370f764a 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -875,4 +875,22 @@ class IssueTest < ActiveSupport::TestCase assert issue.save assert_equal 0, ActionMailer::Base.deliveries.size end + + test 'changing the line endings in a description will not be recorded as a Journal' do + User.current = User.find(1) + issue = Issue.find(1) + issue.update_attribute(:description, "Description with newlines\n\nembedded") + issue.reload + assert issue.description.include?("\n") + + assert_no_difference("Journal.count") do + issue.safe_attributes= { + 'description' => "Description with newlines\r\n\r\nembedded" + } + assert issue.save + end + + assert_equal "Description with newlines\n\nembedded", issue.reload.description + end + end