##// END OF EJS Templates
use git diff format for all diff (#11868)...
Toshi MARUYAMA -
r10245:f18edc4e1c04
parent child
Show More
@@ -68,6 +68,7 module Redmine
68 @type = type
68 @type = type
69 @style = style
69 @style = style
70 @file_name = nil
70 @file_name = nil
71 @git_diff = false
71 end
72 end
72
73
73 # Function for add a line of this Diff
74 # Function for add a line of this Diff
@@ -116,15 +117,21 module Redmine
116 private
117 private
117
118
118 def file_name=(arg)
119 def file_name=(arg)
119 case @style
120 both_git_diff = false
120 when "Git"
121 if file_name.nil?
122 @git_diff = true if arg =~ %r{^(a/|/dev/null)}
123 else
124 both_git_diff = (@git_diff && arg =~ %r{^(b/|/dev/null)})
125 end
126 if both_git_diff
121 if file_name && arg == "/dev/null"
127 if file_name && arg == "/dev/null"
122 # keep the original file name
128 # keep the original file name
129 @file_name = file_name.sub(%r{^a/}, '')
123 else
130 else
124 # remove leading a/ b/
131 # remove leading b/
125 @file_name = arg.sub(%r{^(a|b)/}, '')
132 @file_name = arg.sub(%r{^b/}, '')
126 end
133 end
127 when "Subversion"
134 elsif @style == "Subversion"
128 # removing trailing "(revision nn)"
135 # removing trailing "(revision nn)"
129 @file_name = arg.sub(%r{\t+\(.*\)$}, '')
136 @file_name = arg.sub(%r{\t+\(.*\)$}, '')
130 else
137 else
@@ -371,6 +371,20 class RepositoriesMercurialControllerTest < ActionController::TestCase
371 end
371 end
372 end
372 end
373
373
374 def test_diff_should_show_modified_filenames
375 get :diff, :id => PRJ_ID, :rev => '400bb8672109', :type => 'inline'
376 assert_response :success
377 assert_template 'diff'
378 assert_select 'th.filename', :text => 'sources/watchers_controller.rb'
379 end
380
381 def test_diff_should_show_deleted_filenames
382 get :diff, :id => PRJ_ID, :rev => 'b3a615152df8', :type => 'inline'
383 assert_response :success
384 assert_template 'diff'
385 assert_select 'th.filename', :text => 'sources/welcome_controller.rb'
386 end
387
374 def test_annotate
388 def test_annotate
375 get :annotate, :id => PRJ_ID,
389 get :annotate, :id => PRJ_ID,
376 :path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
390 :path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
@@ -169,6 +169,60 diff -r 000000000000 -r ea98b14f75f0 README4
169 DIFF
169 DIFF
170 )
170 )
171 assert_equal 4, diff.size
171 assert_equal 4, diff.size
172 assert_equal "README1", diff[0].file_name
173 end
174
175 def test_both_git_diff
176 diff = Redmine::UnifiedDiff.new(<<-DIFF
177 # HG changeset patch
178 # User test
179 # Date 1348014182 -32400
180 # Node ID d1c871b8ef113df7f1c56d41e6e3bfbaff976e1f
181 # Parent 180b6605936cdc7909c5f08b59746ec1a7c99b3e
182 modify test1.txt
183
184 diff -r 180b6605936c -r d1c871b8ef11 test1.txt
185 --- a/test1.txt
186 +++ b/test1.txt
187 @@ -1,1 +1,1 @@
188 -test1
189 +modify test1
190 DIFF
191 )
192 assert_equal 1, diff.size
193 assert_equal "test1.txt", diff[0].file_name
194 end
195
196 def test_include_a_b_slash
197 diff = Redmine::UnifiedDiff.new(<<-DIFF
198 --- test1.txt
199 +++ b/test02.txt
200 @@ -1 +0,0 @@
201 -modify test1
202 DIFF
203 )
204 assert_equal 1, diff.size
205 assert_equal "b/test02.txt", diff[0].file_name
206
207 diff = Redmine::UnifiedDiff.new(<<-DIFF
208 --- a/test1.txt
209 +++ a/test02.txt
210 @@ -1 +0,0 @@
211 -modify test1
212 DIFF
213 )
214 assert_equal 1, diff.size
215 assert_equal "a/test02.txt", diff[0].file_name
216
217 diff = Redmine::UnifiedDiff.new(<<-DIFF
218 --- a/test1.txt
219 +++ test02.txt
220 @@ -1 +0,0 @@
221 -modify test1
222 DIFF
223 )
224 assert_equal 1, diff.size
225 assert_equal "test02.txt", diff[0].file_name
172 end
226 end
173
227
174 private
228 private
General Comments 0
You need to be logged in to leave comments. Login now