59bafdad60970d85c620d54b1d19016a1a817355
Author: Robin Luckey
Date: 2009-05-19 15:52:59 -0700
diff --git a/lib/scm/adapters/cvs/validation.rb b/lib/scm/adapters/cvs/validation.rb
index 3cd8ff8..97a8275 100644
--- a/lib/scm/adapters/cvs/validation.rb
+++ b/lib/scm/adapters/cvs/validation.rb
@@ -71,7 +71,7 @@ module Scm::Adapters
# Based on the URL, take a guess about which forge this code is hosted on.
def guess_forge
- @url =~ /.*pserver.*@(([^\.]+\.)?cvs\.)?(dev\.)?([^:]+):\//i ? $4.downcase : nil
+ @url =~ /.*pserver.*@(([^\.]+\.)?(cvs|dev)\.)?([^:]+):\//i ? $4.downcase : nil
end
end
end
diff --git a/lib/scm/adapters/git/validation.rb b/lib/scm/adapters/git/validation.rb
index ef5cc60..b3607b6 100644
--- a/lib/scm/adapters/git/validation.rb
+++ b/lib/scm/adapters/git/validation.rb
@@ -18,5 +18,15 @@ module Scm::Adapters
return unless valid?
@errors << [:failed, "The server did not respond to the 'git-ls-remote' command. Is the URL correct?"] unless self.exists?
end
+
+ def guess_forge
+ u = @url =~ /:\/\/(.*\.?git\.)?([^\/^:]+)(:\d+)?\// ? $2 : nil
+ case u
+ when /(sourceforge\.net$)/
+ $1
+ else
+ u
+ end
+ end
end
end
diff --git a/lib/scm/adapters/hg/validation.rb b/lib/scm/adapters/hg/validation.rb
index bfeb90f..e289547 100644
--- a/lib/scm/adapters/hg/validation.rb
+++ b/lib/scm/adapters/hg/validation.rb
@@ -12,5 +12,15 @@ module Scm::Adapters
return unless valid?
@errors << [:failed, "The server did not respond to the 'hg id' command. Is the URL correct?"] unless self.exist?
end
+
+ def guess_forge
+ u = @url =~ /:\/\/(.*\.?hg\.)?([^\/^:]+)(:\d+)?\// ? $2 : nil
+ case u
+ when /(sourceforge\.net$)/
+ $1
+ else
+ u
+ end
+ end
end
end
diff --git a/test/unit/cvs_validation_test.rb b/test/unit/cvs_validation_test.rb
index c3fe9bc..a50e016 100644
--- a/test/unit/cvs_validation_test.rb
+++ b/test/unit/cvs_validation_test.rb
@@ -130,11 +130,17 @@ module Scm::Adapters
cvs = CvsAdapter.new(:url => "garbage_in_garbage_out")
assert_equal nil, cvs.guess_forge
+ cvs = CvsAdapter.new(:url => ':pserver:anonymous:@boost.cvs.sourceforge.net:/cvsroot/boost')
+ assert_equal 'sourceforge.net', cvs.guess_forge
+
cvs = CvsAdapter.new(:url => ':pserver:guest:@cvs.dev.java.net:/cvs')
assert_equal 'java.net', cvs.guess_forge
cvs = CvsAdapter.new(:url => ":PSERVER:ANONCVS:@CVS.DEV.JAVA.NET:/cvs")
assert_equal 'java.net', cvs.guess_forge
+
+ cvs = CvsAdapter.new(:url => ":pserver:guest:@colorchooser.dev.java.net:/cvs")
+ assert_equal 'java.net', cvs.guess_forge
end
end
end
diff --git a/test/unit/git_validation_test.rb b/test/unit/git_validation_test.rb
index a404675..f30f020 100644
--- a/test/unit/git_validation_test.rb
+++ b/test/unit/git_validation_test.rb
@@ -34,6 +34,9 @@ module Scm::Adapters
git = GitAdapter.new(:url => nil)
assert_equal nil, git.guess_forge
+ git = GitAdapter.new(:url => 'git://methabot.git.sourceforge.net/gitroot/methabot')
+ assert_equal 'sourceforge.net', git.guess_forge
+
git = GitAdapter.new( :url => 'http://kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.17.y.git')
assert_equal 'kernel.org', git.guess_forge
end
diff --git a/test/unit/hg_validation_test.rb b/test/unit/hg_validation_test.rb
index 212b441..f0385af 100644
--- a/test/unit/hg_validation_test.rb
+++ b/test/unit/hg_validation_test.rb
@@ -49,6 +49,12 @@ module Scm::Adapters
hg = HgAdapter.new( :url => 'http://www.selenic.com/repo/hello')
assert_equal 'www.selenic.com', hg.guess_forge
+
+ hg = HgAdapter.new( :url => 'http://algoc.hg.sourceforge.net:8000/hgroot/algoc')
+ assert_equal 'sourceforge.net', hg.guess_forge
+
+ hg = HgAdapter.new( :url => 'http://poliqarp.sourceforge.net/hg/poliqarp/')
+ assert_equal 'sourceforge.net', hg.guess_forge
end
end
end
