From 32f92a50587fbde5bd2c442e295a8ea831f0ac11 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 1 Jul 2011 12:25:07 -0700 Subject: [PATCH] [#501] Ugly patch to stop creating journals when only line endings change --- app/models/issue.rb | 7 +++++++ test/unit/issue_test.rb | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) 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