From 92fdcc1ce4f0a7d8555a245e8e4d016b67d4d998 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Tue, 5 May 2020 11:56:05 +0000 Subject: [PATCH] remove git format patch footer (#33357) git-svn-id: http://svn.redmine.org/redmine/trunk@19752 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/unified_diff.rb | 6 ++++++ test/unit/lib/redmine/unified_diff_test.rb | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) 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