##// 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
160 diff_args = "-c #{hgrev(identifier_from)}"
161 if self.class.client_version_above?([1, 2])
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,9 +32,10 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)
39 def test_show
40 def test_show
40 get :show, :id => 3
41 get :show, :id => 3
@@ -132,12 +133,15 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'
135 # Line 22 removed
136
136 assert_tag :tag => 'th',
137 if @repository.scm.class.client_version_above?([1, 2])
137 :content => '22',
138 # Line 22 removed
138 :sibling => { :tag => 'td',
139 assert_tag :tag => 'th',
139 :attributes => { :class => /diff_out/ },
140 :content => '22',
140 :content => /def remove/ }
141 :sibling => { :tag => 'td',
142 :attributes => { :class => /diff_out/ },
143 :content => /def remove/ }
144 end
141 end
145 end
142 end
146 end
143
147
@@ -43,13 +43,19 begin
43 end
43 end
44
44
45 def test_diff
45 def test_diff
46 assert_nil @adapter.diff(nil, '100000')
46 if @adapter.class.client_version_above?([1, 2])
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)
50 assert_equal 28, diff1.size
52 if @adapter.class.client_version_above?([1, 2])
51 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
53 assert_equal 28, diff1.size
52 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
54 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
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