You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/11/22 00:16:10 UTC

svn commit: r1204747 - in /maven/scm/trunk: maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/ maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/...

Author: olamy
Date: Mon Nov 21 23:16:01 2011
New Revision: 1204747

URL: http://svn.apache.org/viewvc?rev=1204747&view=rev
Log:
[SCM-645] add a command to get various informations (branches, tag) from remote scm server
Submitted by Bertrand Paquet.

Added:
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitExeRemoteInfoCommandTckTest.java
      - copied, changed from r1203448, maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnExeRemoteInfoCommandTckTest.java
      - copied, changed from r1203448, maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java   (with props)
    maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remoteinfo/
    maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remoteinfo/RemoteInfoCommandTckTest.java
      - copied, changed from r1203448, maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java?rev=1204747&r1=1204746&r2=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java Mon Nov 21 23:16:01 2011
@@ -37,6 +37,7 @@ import org.apache.maven.scm.command.diff
 import org.apache.maven.scm.command.export.ExportScmResult;
 import org.apache.maven.scm.command.info.InfoScmResult;
 import org.apache.maven.scm.command.list.ListScmResult;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
 import org.apache.maven.scm.command.remove.RemoveScmResult;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.command.tag.TagScmResult;
@@ -321,5 +322,16 @@ public abstract class AbstractGitScmProv
     }
 
     protected abstract GitCommand getBlameCommand();
+    
+    /** {@inheritDoc} */
+    public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        GitCommand cmd = getRemoteInfoCommand();
+
+        return (RemoteInfoScmResult) executeCommand( cmd, repository, fileSet, parameters );
+    }
+
+    protected abstract GitCommand getRemoteInfoCommand();
 
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java?rev=1204747&r1=1204746&r2=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java Mon Nov 21 23:16:01 2011
@@ -95,6 +95,10 @@ public class TestGitScmProvider
     {
         return null;
     }
+    
+    public GitCommand getRemoteInfoCommand() {
+    	return null;
+    }
 
     protected String getRepositoryURL( File path )
     {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java?rev=1204747&r1=1204746&r2=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java Mon Nov 21 23:16:01 2011
@@ -35,6 +35,7 @@ import org.apache.maven.scm.provider.git
 import org.apache.maven.scm.provider.git.gitexe.command.diff.GitDiffCommand;
 import org.apache.maven.scm.provider.git.gitexe.command.info.GitInfoCommand;
 import org.apache.maven.scm.provider.git.gitexe.command.list.GitListCommand;
+import org.apache.maven.scm.provider.git.gitexe.command.remoteinfo.GitRemoteInfoCommand;
 import org.apache.maven.scm.provider.git.gitexe.command.remove.GitRemoveCommand;
 import org.apache.maven.scm.provider.git.gitexe.command.status.GitStatusCommand;
 import org.apache.maven.scm.provider.git.gitexe.command.tag.GitTagCommand;
@@ -135,6 +136,12 @@ public class GitExeScmProvider
     }
 
     /** {@inheritDoc} */
+    protected GitCommand getRemoteInfoCommand()
+    {
+        return new GitRemoteInfoCommand();
+    }
+
+    /** {@inheritDoc} */
     protected String getRepositoryURL( File path )
         throws ScmException
     {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java?rev=1204747&r1=1204746&r2=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/GitCommandLineUtils.java Mon Nov 21 23:16:01 2011
@@ -86,7 +86,10 @@ public final class GitCommandLineUtils
 
         cl.createArg().setValue( command );
 
-        cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        if ( workingDirectory != null )
+        {
+        	cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+        }
 
         return cl;
     }

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java?rev=1204747&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java Mon Nov 21 23:16:01 2011
@@ -0,0 +1,79 @@
+package org.apache.maven.scm.provider.git.gitexe.command.remoteinfo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.remoteinfo.AbstractRemoteInfoCommand;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.git.command.GitCommand;
+import org.apache.maven.scm.provider.git.gitexe.command.GitCommandLineUtils;
+import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author Bertrand Paquet
+ */
+public class GitRemoteInfoCommand
+    extends AbstractRemoteInfoCommand
+    implements GitCommand
+{
+
+    @Override
+    public RemoteInfoScmResult executeRemoteInfoCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+                                                         CommandParameters parameters )
+        throws ScmException
+    {
+        GitScmProviderRepository gitRepository = (GitScmProviderRepository) repository;
+
+        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+        Commandline clLsRemote = createCommandLine( gitRepository );
+
+        GitRemoteInfoConsumer consumer = new GitRemoteInfoConsumer( getLogger(), clLsRemote.toString() );
+
+        int exitCode = GitCommandLineUtils.execute( clLsRemote, consumer, stderr, getLogger() );
+        if ( exitCode != 0 )
+        {
+            throw new ScmException( "unbale to execute ls-remote on " + gitRepository.getFetchUrl() );
+        }
+
+        return consumer.getRemoteInfoScmResult();
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    public static Commandline createCommandLine( GitScmProviderRepository repository )
+    {
+        Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( null, "ls-remote" );
+
+        cl.setWorkingDirectory( System.getProperty( "java.io.tmpdir" ) );
+
+        cl.createArg().setValue( repository.getFetchUrl().substring( "scm:git:".length() ) );
+
+        return cl;
+    }
+
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoCommand.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java?rev=1204747&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java Mon Nov 21 23:16:01 2011
@@ -0,0 +1,107 @@
+package org.apache.maven.scm.provider.git.gitexe.command.remoteinfo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.regexp.RE;
+import org.apache.regexp.RESyntaxException;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+import java.util.HashMap;
+
+/**
+ * @author Bertrand Paquet
+ */
+public class GitRemoteInfoConsumer
+    implements StreamConsumer
+{
+
+    /**
+     * The pattern used to match branches
+     */
+    private static final String BRANCH_PATTERN = "^(.*)\\s+refs/heads/(.*)";
+
+    /**
+     * The pattern used to match tags
+     */
+    private static final String TAGS_PATTERN = "^(.*)\\s+refs/tags/(.*)";
+
+    private ScmLogger logger;
+
+    private RemoteInfoScmResult remoteInfoScmResult;
+
+    private RE branchRegexp;
+
+    private RE tagRegexp;
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    public GitRemoteInfoConsumer( ScmLogger logger, String commandLine )
+    {
+        this.logger = logger;
+        this.remoteInfoScmResult =
+            new RemoteInfoScmResult( commandLine, new HashMap<String, String>(), new HashMap<String, String>() );
+
+        try
+        {
+            this.branchRegexp = new RE( BRANCH_PATTERN );
+            this.tagRegexp = new RE( TAGS_PATTERN );
+        }
+        catch ( RESyntaxException ex )
+        {
+            throw new RuntimeException(
+                "INTERNAL ERROR: Could not create regexp to parse git ls-remote file. This shouldn't happen. Something is probably wrong with the oro installation.",
+                ex );
+        }
+    }
+
+    // ----------------------------------------------------------------------
+    // StreamConsumer Implementation
+    // ----------------------------------------------------------------------
+
+    /**
+     * {@inheritDoc}
+     */
+    public void consumeLine( String line )
+    {
+        if ( logger.isDebugEnabled() )
+        {
+            logger.debug( line );
+        }
+        if ( branchRegexp.match( line ) )
+        {
+            remoteInfoScmResult.getBranches().put( branchRegexp.getParen( 2 ), branchRegexp.getParen( 1 ) );
+        }
+        if ( tagRegexp.match( line ) )
+        {
+            remoteInfoScmResult.getTags().put( tagRegexp.getParen( 2 ), tagRegexp.getParen( 1 ) );
+        }
+
+    }
+
+    public RemoteInfoScmResult getRemoteInfoScmResult()
+    {
+        return remoteInfoScmResult;
+    }
+
+}
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitExeRemoteInfoCommandTckTest.java (from r1203448, maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java)
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitExeRemoteInfoCommandTckTest.java?p2=maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitExeRemoteInfoCommandTckTest.java&p1=maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java&r1=1203448&r2=1204747&rev=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitExeRemoteInfoCommandTckTest.java Mon Nov 21 23:16:01 2011
@@ -1,4 +1,5 @@
-package org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo;
+package org.apache.maven.scm.provider.git.gitexe.command.remoteinfo;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,7 +9,7 @@ package org.apache.maven.scm.provider.sv
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *   http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -19,25 +20,32 @@ package org.apache.maven.scm.provider.sv
  */
 
 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
-import org.apache.maven.scm.provider.ScmProvider;
-import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
-import org.codehaus.plexus.PlexusTestCase;
+import org.apache.maven.scm.provider.git.GitScmTestUtils;
+import org.apache.maven.scm.provider.git.command.remoteinfo.GitRemoteInfoCommandTckTest;
 
 /**
- * @author Olivier Lamy
+ * @author Bertrand Paquet
  */
-public class RemoteInfoCommandTest
-    extends PlexusTestCase
+public class GitExeRemoteInfoCommandTckTest
+    extends GitRemoteInfoCommandTckTest
 {
 
-    public void testRemoteInfoCommand()
+    @Override
+    protected void checkResult( RemoteInfoScmResult result )
+    {
+        assertEquals( 1, result.getBranches().size() );
+        assertEquals( "92f139dfec4d1dfb79c3cd2f94e83bf13129668b", result.getBranches().get( "master" ) );
+
+        assertEquals( 0, result.getTags().size() );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getScmUrl()
         throws Exception
     {
-        ScmProvider svnProvider = (ScmProvider) lookup( ScmProvider.ROLE, "svn" );
-        SvnScmProviderRepository repository =
-            new SvnScmProviderRepository( "http://svn.apache.org/repos/asf/maven/maven-3/trunk" );
-        RemoteInfoScmResult remoteInfoScmResult = svnProvider.remoteInfo( repository, null, null );
-        assertTrue( remoteInfoScmResult.getTags().keySet().contains( "maven-3.0" ) );
-        // no test on branches as can be removed
+        return GitScmTestUtils.getScmUrl( getRepositoryRoot(), "git" );
     }
-}
+
+}
\ No newline at end of file

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java?rev=1204747&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java Mon Nov 21 23:16:01 2011
@@ -0,0 +1,50 @@
+package org.apache.maven.scm.provider.git.gitexe.command.remoteinfo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
+import org.apache.maven.scm.log.DefaultLog;
+import org.codehaus.plexus.PlexusTestCase;
+
+/**
+ * @author Bertrand Paquet
+ */
+public class GitRemoteInfoConsumerTest
+    extends PlexusTestCase
+{
+
+    public void testConsumerRemoteInfo()
+    {
+        GitRemoteInfoConsumer consumer = new GitRemoteInfoConsumer( new DefaultLog(), null );
+
+        consumer.consumeLine( "344581899752998038a74989142221ae08c381bc	HEAD" );
+        consumer.consumeLine( "344581899752998038a74989142221ae08c381bc	refs/heads/master" );
+        consumer.consumeLine( "9006c3dbaa9749aa435694f261638583c9088419	refs/tags/staging" );
+
+        RemoteInfoScmResult remoteInfoScmResult = consumer.getRemoteInfoScmResult();
+
+        assertEquals( 1, remoteInfoScmResult.getBranches().size() );
+        assertEquals( "344581899752998038a74989142221ae08c381bc", remoteInfoScmResult.getBranches().get( "master" ) );
+
+        assertEquals( 1, remoteInfoScmResult.getTags().size() );
+        assertEquals( "9006c3dbaa9749aa435694f261638583c9088419", remoteInfoScmResult.getTags().get( "staging" ) );
+    }
+
+}
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/remoteinfo/GitRemoteInfoConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml?rev=1204747&r1=1204746&r2=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml Mon Nov 21 23:16:01 2011
@@ -38,5 +38,9 @@
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-test</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.scm</groupId>
+	  <artifactId>maven-scm-provider-git-commons</artifactId>
+    </dependency>
   </dependencies>
 </project>

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java?rev=1204747&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java Mon Nov 21 23:16:01 2011
@@ -0,0 +1,51 @@
+package org.apache.maven.scm.provider.git.command.remoteinfo;
+
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.git.GitScmTestUtils;
+import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
+import org.apache.maven.scm.tck.command.remoteinfo.RemoteInfoCommandTckTest;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * @author Bertrand Paquet
+ */
+
+public abstract class GitRemoteInfoCommandTckTest
+    extends RemoteInfoCommandTckTest
+{
+
+    @Override
+    protected ScmProviderRepository getScmProviderRepository()
+        throws Exception
+    {
+        return new GitScmProviderRepository( getScmUrl() );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initRepo()
+        throws Exception
+    {
+        GitScmTestUtils.initRepo( "src/test/resources/repository/", getRepositoryRoot(), getWorkingDirectory() );
+    }
+
+}
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/src/main/java/org/apache/maven/scm/provider/git/command/remoteinfo/GitRemoteInfoCommandTckTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java?rev=1204747&r1=1204746&r2=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java Mon Nov 21 23:16:01 2011
@@ -1,43 +0,0 @@
-package org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo;
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
-import org.apache.maven.scm.provider.ScmProvider;
-import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
-import org.codehaus.plexus.PlexusTestCase;
-
-/**
- * @author Olivier Lamy
- */
-public class RemoteInfoCommandTest
-    extends PlexusTestCase
-{
-
-    public void testRemoteInfoCommand()
-        throws Exception
-    {
-        ScmProvider svnProvider = (ScmProvider) lookup( ScmProvider.ROLE, "svn" );
-        SvnScmProviderRepository repository =
-            new SvnScmProviderRepository( "http://svn.apache.org/repos/asf/maven/maven-3/trunk" );
-        RemoteInfoScmResult remoteInfoScmResult = svnProvider.remoteInfo( repository, null, null );
-        assertTrue( remoteInfoScmResult.getTags().keySet().contains( "maven-3.0" ) );
-        // no test on branches as can be removed
-    }
-}

Copied: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnExeRemoteInfoCommandTckTest.java (from r1203448, maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java)
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnExeRemoteInfoCommandTckTest.java?p2=maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnExeRemoteInfoCommandTckTest.java&p1=maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java&r1=1203448&r2=1204747&rev=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnExeRemoteInfoCommandTckTest.java Mon Nov 21 23:16:01 2011
@@ -1,4 +1,5 @@
 package org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,7 +9,7 @@ package org.apache.maven.scm.provider.sv
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *   http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -19,25 +20,28 @@ package org.apache.maven.scm.provider.sv
  */
 
 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
-import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.svn.command.remoteinfo.SvnRemoteInfoCommandTckTest;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
-import org.codehaus.plexus.PlexusTestCase;
 
 /**
- * @author Olivier Lamy
+ * @author Bertrand Paquet
  */
-public class RemoteInfoCommandTest
-    extends PlexusTestCase
+public class SvnExeRemoteInfoCommandTckTest
+    extends SvnRemoteInfoCommandTckTest
 {
 
-    public void testRemoteInfoCommand()
+    @Override
+    protected void checkResult( RemoteInfoScmResult result )
+    {
+        assertTrue( result.getTags().keySet().contains( "maven-3.0" ) );
+    }
+
+    @Override
+    protected ScmProviderRepository getScmProviderRepository()
         throws Exception
     {
-        ScmProvider svnProvider = (ScmProvider) lookup( ScmProvider.ROLE, "svn" );
-        SvnScmProviderRepository repository =
-            new SvnScmProviderRepository( "http://svn.apache.org/repos/asf/maven/maven-3/trunk" );
-        RemoteInfoScmResult remoteInfoScmResult = svnProvider.remoteInfo( repository, null, null );
-        assertTrue( remoteInfoScmResult.getTags().keySet().contains( "maven-3.0" ) );
-        // no test on branches as can be removed
+        return new SvnScmProviderRepository( "http://svn.apache.org/repos/asf/maven/maven-3/trunk" );
     }
-}
+
+}
\ No newline at end of file

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java?rev=1204747&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java Mon Nov 21 23:16:01 2011
@@ -0,0 +1,51 @@
+package org.apache.maven.scm.provider.svn.command.remoteinfo;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
+import org.apache.maven.scm.tck.command.remoteinfo.RemoteInfoCommandTckTest;
+
+import java.io.File;
+
+/**
+ * @author Bertrand Paquet
+ */
+public abstract class SvnRemoteInfoCommandTckTest
+    extends RemoteInfoCommandTckTest
+{
+    /**
+     * {@inheritDoc}
+     */
+    public String getScmUrl()
+        throws Exception
+    {
+        return SvnScmTestUtils.getScmUrl( new File( getRepositoryRoot(), "trunk" ) );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void initRepo()
+        throws Exception
+    {
+        SvnScmTestUtils.initializeRepository( getRepositoryRoot() );
+    }
+
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svntest/src/main/java/org/apache/maven/scm/provider/svn/command/remoteinfo/SvnRemoteInfoCommandTckTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remoteinfo/RemoteInfoCommandTckTest.java (from r1203448, maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java)
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remoteinfo/RemoteInfoCommandTckTest.java?p2=maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remoteinfo/RemoteInfoCommandTckTest.java&p1=maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java&r1=1203448&r2=1204747&rev=1204747&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java (original)
+++ maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/remoteinfo/RemoteInfoCommandTckTest.java Mon Nov 21 23:16:01 2011
@@ -1,4 +1,5 @@
-package org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo;
+package org.apache.maven.scm.tck.command.remoteinfo;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,7 +9,7 @@ package org.apache.maven.scm.provider.sv
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *   http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -18,26 +19,37 @@ package org.apache.maven.scm.provider.sv
  * under the License.
  */
 
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTckTestCase;
 import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
 import org.apache.maven.scm.provider.ScmProvider;
-import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
-import org.codehaus.plexus.PlexusTestCase;
+import org.apache.maven.scm.provider.ScmProviderRepository;
 
 /**
- * @author Olivier Lamy
+ * This test tests the remote info command.
+ * <p/>
+ * This test have to be subclassed. The expected result have to be implemented in
+ * sub class
+ * <p/>
+ *
+ * @author Bertrand Paquet
  */
-public class RemoteInfoCommandTest
-    extends PlexusTestCase
+public abstract class RemoteInfoCommandTckTest
+    extends ScmTckTestCase
 {
 
+    protected abstract void checkResult( RemoteInfoScmResult result );
+
+    protected abstract ScmProviderRepository getScmProviderRepository()
+        throws Exception;
+
     public void testRemoteInfoCommand()
         throws Exception
     {
-        ScmProvider svnProvider = (ScmProvider) lookup( ScmProvider.ROLE, "svn" );
-        SvnScmProviderRepository repository =
-            new SvnScmProviderRepository( "http://svn.apache.org/repos/asf/maven/maven-3/trunk" );
-        RemoteInfoScmResult remoteInfoScmResult = svnProvider.remoteInfo( repository, null, null );
-        assertTrue( remoteInfoScmResult.getTags().keySet().contains( "maven-3.0" ) );
-        // no test on branches as can be removed
+        ScmProvider provider = getScmManager().getProviderByRepository( getScmRepository() );
+        RemoteInfoScmResult result =
+            provider.remoteInfo( getScmProviderRepository(), new ScmFileSet( getWorkingCopy() ), null );
+
+        checkResult( result );
     }
 }