OSDN Git Service

Fixed: r4417 breaks MercurialAdapter with ruby 1.8.6 (#5117).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 21 Nov 2010 14:25:26 +0000 (14:25 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 21 Nov 2010 14:25:26 +0000 (14:25 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4422 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/scm/adapters/mercurial_adapter.rb
test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb

index c1be575..b476501 100644 (file)
@@ -38,13 +38,13 @@ module Redmine
             # release number (eg 0.9.5 or 1.0) or as a revision
             # id composed of 12 hexa characters.
             theversion = hgversion_from_command_line
-            if m = theversion.match(/\b\d+(\.\d+)+\b/)
-              m[0].split(".").collect(&:to_i)
+            if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)})
+              m[2].scan(%r{\d+}).collect(&:to_i)
             end
           end
           
           def hgversion_from_command_line
-            %x{#{HG_BIN} --version}.lines.first.to_s
+            shellout("#{HG_BIN} --version") { |io| io.read }.to_s
           end
           
           def template_path
index cefc9c7..311262a 100644 (file)
@@ -16,8 +16,10 @@ begin
                   "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
                   "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
                   "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
-                  "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5]}
-      
+                  "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
+                  "(1.6)\n(1.7)\n(1.8)"           => [1,6],
+                  "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
+
       to_test.each do |s, v|
         test_hgversion_for(s, v)
       end
@@ -27,8 +29,9 @@ begin
       to_test = { [0,9,5] => "0.9.5",
                   [1,0] => "1.0",
                   [] => "1.0",
-                  [1,0,1] => "1.0"}
-      
+                  [1,0,1] => "1.0",
+                  [1,7]   => "1.0",
+                  [1,7,1] => "1.0"}
       to_test.each do |v, template|
         test_template_path_for(v, template)
       end
@@ -50,5 +53,8 @@ begin
   end
   
 rescue LoadError
-  def test_fake; assert(false, "Requires mocha to run those tests")  end
+  class MercurialMochaFake < ActiveSupport::TestCase
+    def test_fake; assert(false, "Requires mocha to run those tests")  end
+  end
 end
+