##// END OF EJS Templates
scm: mercurial: diff '-c' option supports above Mercurial 1.2 (#3724, #7253)....
Toshi MARUYAMA -
r4566:a6f05b5e56fd
parent child
Show More
@@ -154,14 +154,18 module Redmine
154 def diff(path, identifier_from, identifier_to=nil)
154 def diff(path, identifier_from, identifier_to=nil)
155 path ||= ''
155 path ||= ''
156 diff_args = ''
156 diff_args = ''
157 diff = []
157 if identifier_to
158 if identifier_to
158 diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}"
159 diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}"
159 else
160 else
161 if self.class.client_version_above?([1, 2])
160 diff_args = "-c #{hgrev(identifier_from)}"
162 diff_args = "-c #{hgrev(identifier_from)}"
163 else
164 return []
165 end
161 end
166 end
162 cmd = "#{HG_BIN} -R #{target('')} diff --nodates --git #{diff_args}"
167 cmd = "#{HG_BIN} -R #{target('')} diff --nodates --git #{diff_args}"
163 cmd << " -I #{target(path)}" unless path.empty?
168 cmd << " -I #{target(path)}" unless path.empty?
164 diff = []
165 shellout(cmd) do |io|
169 shellout(cmd) do |io|
166 io.each_line do |line|
170 io.each_line do |line|
167 diff << line
171 diff << line
@@ -32,7 +32,8 class RepositoriesMercurialControllerTest < ActionController::TestCase
32 @request = ActionController::TestRequest.new
32 @request = ActionController::TestRequest.new
33 @response = ActionController::TestResponse.new
33 @response = ActionController::TestResponse.new
34 User.current = nil
34 User.current = nil
35 Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH)
35 @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH)
36 assert @repository
36 end
37 end
37
38
38 if File.directory?(REPOSITORY_PATH)
39 if File.directory?(REPOSITORY_PATH)
@@ -132,6 +133,8 class RepositoriesMercurialControllerTest < ActionController::TestCase
132 get :diff, :id => 3, :rev => 4
133 get :diff, :id => 3, :rev => 4
133 assert_response :success
134 assert_response :success
134 assert_template 'diff'
135 assert_template 'diff'
136
137 if @repository.scm.class.client_version_above?([1, 2])
135 # Line 22 removed
138 # Line 22 removed
136 assert_tag :tag => 'th',
139 assert_tag :tag => 'th',
137 :content => '22',
140 :content => '22',
@@ -140,6 +143,7 class RepositoriesMercurialControllerTest < ActionController::TestCase
140 :content => /def remove/ }
143 :content => /def remove/ }
141 end
144 end
142 end
145 end
146 end
143
147
144 def test_annotate
148 def test_annotate
145 get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb']
149 get :annotate, :id => 3, :path => ['sources', 'watchers_controller.rb']
@@ -43,13 +43,19 begin
43 end
43 end
44
44
45 def test_diff
45 def test_diff
46 if @adapter.class.client_version_above?([1, 2])
46 assert_nil @adapter.diff(nil, '100000')
47 assert_nil @adapter.diff(nil, '100000')
48 end
47 assert_nil @adapter.diff(nil, '100000', '200000')
49 assert_nil @adapter.diff(nil, '100000', '200000')
48 [2, '400bb8672109', '400', 400].each do |r1|
50 [2, '400bb8672109', '400', 400].each do |r1|
49 diff1 = @adapter.diff(nil, r1)
51 diff1 = @adapter.diff(nil, r1)
52 if @adapter.class.client_version_above?([1, 2])
50 assert_equal 28, diff1.size
53 assert_equal 28, diff1.size
51 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
54 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
52 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
55 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
56 else
57 assert_equal 0, diff1.size
58 end
53 [4, 'def6d2f1254a'].each do |r2|
59 [4, 'def6d2f1254a'].each do |r2|
54 diff2 = @adapter.diff(nil,r1,r2)
60 diff2 = @adapter.diff(nil,r1,r2)
55 assert_equal 50, diff2.size
61 assert_equal 50, diff2.size
General Comments 0
You need to be logged in to leave comments. Login now