Fixes diff parser for when lines starting with multiple dashes are removed (#4186).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3028 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
58103680bd
commit
4b83a0d848
|
@ -27,11 +27,10 @@ module Redmine
|
||||||
@truncated = false
|
@truncated = false
|
||||||
diff_table = DiffTable.new(diff_type)
|
diff_table = DiffTable.new(diff_type)
|
||||||
diff.each do |line|
|
diff.each do |line|
|
||||||
if line =~ /^(---|\+\+\+) (.*)$/
|
unless diff_table.add_line line
|
||||||
self << diff_table if diff_table.length > 1
|
self << diff_table if diff_table.length > 1
|
||||||
diff_table = DiffTable.new(diff_type)
|
diff_table = DiffTable.new(diff_type)
|
||||||
end
|
end
|
||||||
diff_table.add_line line
|
|
||||||
lines += 1
|
lines += 1
|
||||||
if options[:max_lines] && lines > options[:max_lines]
|
if options[:max_lines] && lines > options[:max_lines]
|
||||||
@truncated = true
|
@truncated = true
|
||||||
|
@ -61,11 +60,11 @@ module Redmine
|
||||||
end
|
end
|
||||||
|
|
||||||
# Function for add a line of this Diff
|
# Function for add a line of this Diff
|
||||||
|
# Returns false when the diff ends
|
||||||
def add_line(line)
|
def add_line(line)
|
||||||
unless @parsing
|
unless @parsing
|
||||||
if line =~ /^(---|\+\+\+) (.*)$/
|
if line =~ /^(---|\+\+\+) (.*)$/
|
||||||
@file_name = $2
|
@file_name = $2
|
||||||
return false
|
|
||||||
elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/
|
elsif line =~ /^@@ (\+|\-)(\d+)(,\d+)? (\+|\-)(\d+)(,\d+)? @@/
|
||||||
@line_num_l = $2.to_i
|
@line_num_l = $2.to_i
|
||||||
@line_num_r = $5.to_i
|
@line_num_r = $5.to_i
|
||||||
|
|
|
@ -33,6 +33,32 @@ class Redmine::UnifiedDiffTest < ActiveSupport::TestCase
|
||||||
diff = Redmine::UnifiedDiff.new(read_diff_fixture('subversion.diff'), :max_lines => 20)
|
diff = Redmine::UnifiedDiff.new(read_diff_fixture('subversion.diff'), :max_lines => 20)
|
||||||
assert_equal 2, diff.size
|
assert_equal 2, diff.size
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_line_starting_with_dashes
|
||||||
|
diff = Redmine::UnifiedDiff.new(<<-DIFF
|
||||||
|
--- old.txt Wed Nov 11 14:24:58 2009
|
||||||
|
+++ new.txt Wed Nov 11 14:25:02 2009
|
||||||
|
@@ -1,8 +1,4 @@
|
||||||
|
-Lines that starts with dashes:
|
||||||
|
-
|
||||||
|
-------------------------
|
||||||
|
--- file.c
|
||||||
|
-------------------------
|
||||||
|
+A line that starts with dashes:
|
||||||
|
|
||||||
|
and removed.
|
||||||
|
|
||||||
|
@@ -23,4 +19,4 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-Another chunk of change
|
||||||
|
+Another chunk of changes
|
||||||
|
|
||||||
|
DIFF
|
||||||
|
)
|
||||||
|
assert_equal 1, diff.size
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue