diff --git a/lib/redmine/unified_diff.rb b/lib/redmine/unified_diff.rb index 67292cf0f..e2b350772 100644 --- a/lib/redmine/unified_diff.rb +++ b/lib/redmine/unified_diff.rb @@ -27,6 +27,12 @@ module Redmine diff = diff.split("\n") if diff.is_a?(String) @diff_type = options[:type] || 'inline' @diff_style = options[:style] + # remove git footer + if diff.length > 1 && + diff[-2] =~ /^--/ && + diff[-1] =~ /^[0-9]/ + diff.pop(2) + end lines = 0 @truncated = false diff_table = DiffTable.new(diff_type, diff_style) diff --git a/test/unit/lib/redmine/unified_diff_test.rb b/test/unit/lib/redmine/unified_diff_test.rb index bbe976cdb..6977b1e2e 100644 --- a/test/unit/lib/redmine/unified_diff_test.rb +++ b/test/unit/lib/redmine/unified_diff_test.rb @@ -449,8 +449,24 @@ class Redmine::UnifiedDiffTest < ActiveSupport::TestCase assert_equal '-- ', footer_lines[0] assert_equal '', footer_lines[-1] diff = Redmine::UnifiedDiff.new(body_lines.join("\n") + "\n", :type => 'sbs') - assert_equal 1, diff.size - assert_equal 5, diff[0].size + + diff_size = diff.size + diff_0_size = diff[0].size + assert_equal 1, diff_size + assert_equal 5, diff_0_size + + diff = Redmine::UnifiedDiff.new("test\n", :type => 'sbs') + assert_equal 0, diff.size + diff = Redmine::UnifiedDiff.new("test\ntest\n", :type => 'sbs') + assert_equal 0, diff.size + + diff = Redmine::UnifiedDiff.new(raw, :type => 'sbs') + assert_equal diff_size, diff.size + assert_equal diff_0_size, diff[0].size + + diff = Redmine::UnifiedDiff.new(raw + "\n\n\n\n", :type => 'sbs') + assert_equal diff_size, diff.size + assert_equal diff_0_size, diff[0].size end private