From a6f05b5e56fdc9523340c2a7bb8c0ca77317045f Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Tue, 11 Jan 2011 05:15:56 +0000 Subject: [PATCH] scm: mercurial: diff '-c' option supports above Mercurial 1.2 (#3724, #7253). r4662 fails in old Mercurial. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4686 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/scm/adapters/mercurial_adapter.rb | 8 ++++++-- .../repositories_mercurial_controller_test.rb | 20 +++++++++++-------- .../scm/adapters/mercurial_adapter_test.rb | 14 +++++++++---- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb index e4f694ad4..77f7d015c 100644 --- a/lib/redmine/scm/adapters/mercurial_adapter.rb +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb @@ -154,14 +154,18 @@ module Redmine def diff(path, identifier_from, identifier_to=nil) path ||= '' diff_args = '' + diff = [] if identifier_to diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}" else - diff_args = "-c #{hgrev(identifier_from)}" + if self.class.client_version_above?([1, 2]) + diff_args = "-c #{hgrev(identifier_from)}" + else + return [] + end end cmd = "#{HG_BIN} -R #{target('')} diff --nodates --git #{diff_args}" cmd << " -I #{target(path)}" unless path.empty? - diff = [] shellout(cmd) do |io| io.each_line do |line| diff << line diff --git a/test/functional/repositories_mercurial_controller_test.rb b/test/functional/repositories_mercurial_controller_test.rb index 5af6626b4..0a9ad3779 100644 --- a/test/functional/repositories_mercurial_controller_test.rb +++ b/test/functional/repositories_mercurial_controller_test.rb @@ -32,9 +32,10 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -132,12 +133,15 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase get :diff, :id => 3, :rev => 4 assert_response :success assert_template 'diff' - # Line 22 removed - assert_tag :tag => 'th', - :content => '22', - :sibling => { :tag => 'td', - :attributes => { :class => /diff_out/ }, - :content => /def remove/ } + + if @repository.scm.class.client_version_above?([1, 2]) + # Line 22 removed + assert_tag :tag => 'th', + :content => '22', + :sibling => { :tag => 'td', + :attributes => { :class => /diff_out/ }, + :content => /def remove/ } + end end end diff --git a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb index d7b9c882f..ed68eeaa8 100644 --- a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb @@ -43,13 +43,19 @@ begin end def test_diff - assert_nil @adapter.diff(nil, '100000') + if @adapter.class.client_version_above?([1, 2]) + assert_nil @adapter.diff(nil, '100000') + end assert_nil @adapter.diff(nil, '100000', '200000') [2, '400bb8672109', '400', 400].each do |r1| diff1 = @adapter.diff(nil, r1) - assert_equal 28, diff1.size - buf = diff1[24].gsub(/\r\n|\r|\n/, "") - assert_equal "+ return true unless klass.respond_to?('watched_by')", buf + if @adapter.class.client_version_above?([1, 2]) + assert_equal 28, diff1.size + buf = diff1[24].gsub(/\r\n|\r|\n/, "") + assert_equal "+ return true unless klass.respond_to?('watched_by')", buf + else + assert_equal 0, diff1.size + end [4, 'def6d2f1254a'].each do |r2| diff2 = @adapter.diff(nil,r1,r2) assert_equal 50, diff2.size -- 2.39.5