]> source.dussan.org Git - redmine.git/commitdiff
scm: mercurial: diff '-c' option supports above Mercurial 1.2 (#3724, #7253).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Tue, 11 Jan 2011 05:15:56 +0000 (05:15 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Tue, 11 Jan 2011 05:15:56 +0000 (05:15 +0000)
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
test/functional/repositories_mercurial_controller_test.rb
test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb

index e4f694ad4f6b4f1967689eb16f57c58fcf82b111..77f7d015caf96f1d636c28b6af4e8b635e8a843b 100644 (file)
@@ -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
index 5af6626b494deba1b5f75c1e7ccb82056ee2163d..0a9ad377914d572b88beca94ae033755bffdd10b 100644 (file)
@@ -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
 
index d7b9c882f77c0503cafd92cf274484ee4484a823..ed68eeaa824981421feb64ade2e08602ca151de2 100644 (file)
@@ -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