From cfc3ee4f5a543f1b49933d1a9608b197c34e1030 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 21 Nov 2010 14:25:26 +0000 Subject: [PATCH] Fixed: r4417 breaks MercurialAdapter with ruby 1.8.6 (#5117). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4422 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/scm/adapters/mercurial_adapter.rb | 6 +++--- .../scm/adapters/mercurial_adapter_test.rb | 16 +++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb index c1be57529..b47650190 100644 --- a/lib/redmine/scm/adapters/mercurial_adapter.rb +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb @@ -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 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 cefc9c74e..311262a46 100644 --- a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb @@ -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 +