summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2010-11-21 14:25:26 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2010-11-21 14:25:26 +0000
commitcfc3ee4f5a543f1b49933d1a9608b197c34e1030 (patch)
tree26d6e0fb15309286f4246d446a725f053245cd82
parent77c6188ec27288470d5270213aa0aef3be0eb655 (diff)
downloadredmine-cfc3ee4f5a543f1b49933d1a9608b197c34e1030.tar.gz
redmine-cfc3ee4f5a543f1b49933d1a9608b197c34e1030.zip
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
-rw-r--r--lib/redmine/scm/adapters/mercurial_adapter.rb6
-rw-r--r--test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb16
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
+