Author: olamy
Date: Sun May 23 19:02:24 2010
New Revision: 947469
URL: http://svn.apache.org/viewvc?rev=947469&view=rev
Log:
[SCM-544] Add blame command to AccuRev provider
Submitted by Grant Gardner
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
(with props)
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRevScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommand.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameConsumer.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/site/apt/index.apt
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLineTest.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/commands/blame/AccuRevBlameConsumerTest.java
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/accurev/annotatelog.txt
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRev.java
Sun May 23 19:02:24 2010
@@ -25,6 +25,8 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
+import org.apache.maven.scm.command.blame.BlameLine;
+
/**
* Represents the AccuRev CLI interface
*
@@ -33,6 +35,8 @@ import java.util.Map;
public interface AccuRev
{
+ public static final String ACCUREV_TIME_FORMAT_STRING = "yyyy/MM/dd
HH:mm:ss";
+
public static final SimpleDateFormat ACCUREV_TIME_SPEC = new
SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );
public static final String DEFAULT_REMOVE_MESSAGE = "removed (maven-scm)";
@@ -232,6 +236,17 @@ public interface AccuRev
throws AccuRevException;
/**
+ * AccuRev annotate an element
+ *
+ * @param file
+ * @param lines - array which will be filled with annotated lines for the
associated file
+ * @return
+ * @throws AccuRevException
+ */
+ boolean annotate( File baseDir, File file, List<BlameLine> lines )
+ throws AccuRevException;
+
+ /**
* Logins in as the given user, retains authtoken for use with subsequent
commands.
*
* @param user
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRevScmProvider.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRevScmProvider.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRevScmProvider.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/AccuRevScmProvider.java
Sun May 23 19:02:24 2010
@@ -347,12 +347,12 @@ public class AccuRevScmProvider
}
/** {...@inheritdoc} */
+ @Override
protected BlameScmResult blame( ScmProviderRepository repository,
ScmFileSet fileSet, CommandParameters parameters )
throws ScmException
{
- AccuRevScmProviderRepository accuRevRepository =
(AccuRevScmProviderRepository) repository;
- AccuRevBlameCommand blameCommand = new AccuRevBlameCommand(
accuRevRepository.getAccuRev().getExecutable() );
- blameCommand.setLogger( getLogger() );
- return (BlameScmResult) blameCommand.execute( repository, fileSet,
parameters );
+
+ AccuRevBlameCommand blameCommand = new AccuRevBlameCommand(
getLogger() );
+ return blameCommand.blame( repository, fileSet, parameters );
}
}
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLine.java
Sun May 23 19:02:24 2010
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
+import org.apache.maven.scm.command.blame.BlameLine;
import org.apache.maven.scm.log.DefaultLog;
import org.apache.maven.scm.log.ScmLogger;
import org.apache.maven.scm.provider.accurev.AccuRev;
@@ -585,6 +586,16 @@ public class AccuRevCommandLine
}
+ public boolean annotate( File basedir, File file, List<BlameLine> lines )
+ throws AccuRevException
+ {
+
+ String[] annotate = { "annotate", "-ftud" };
+ AnnotateConsumer stdout = new AnnotateConsumer( lines, getLogger() );
+
+ return executeCommandLine( basedir, annotate,
Collections.singletonList( file ), stdout );
+ }
+
public boolean showRefTrees( Map<String, WorkSpace> workSpaces )
throws AccuRevException
{
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java?rev=947469&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
Sun May 23 19:02:24 2010
@@ -0,0 +1,78 @@
+package org.apache.maven.scm.provider.accurev.cli;
+
+/*
+ * 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 java.util.Date;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.maven.scm.command.blame.BlameLine;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.accurev.AccuRev;
+import org.apache.maven.scm.util.AbstractConsumer;
+
+/**
+ * @author Evgeny Mandrikov
+ * @author Grant Gardner
+ * @since 1.4
+ */
+public class AnnotateConsumer
+ extends AbstractConsumer
+{
+
+ /* 3 godin 2009/11/18 16:26:33 */
+ private static final Pattern LINE_PATTERN = Pattern.compile(
"^\\s+(\\d+)\\s+(\\w+)\\s+([0-9/]+ [0-9:]+).*" );
+
+ private List<BlameLine> lines;
+
+ public AnnotateConsumer( List<BlameLine> lines, ScmLogger scmLogger )
+ {
+
+ super( scmLogger );
+ this.lines = lines;
+ }
+
+ public void consumeLine( String line )
+ {
+
+ final Matcher matcher = LINE_PATTERN.matcher( line );
+ if ( matcher.matches() )
+ {
+ String revision = matcher.group( 1 ).trim();
+ String author = matcher.group( 2 ).trim();
+ String dateStr = matcher.group( 3 ).trim();
+
+ Date date = parseDate( dateStr, null,
AccuRev.ACCUREV_TIME_FORMAT_STRING );
+
+ lines.add( new BlameLine( date, revision, author ) );
+ }
+ else
+ {
+ throw new RuntimeException( "Unable to parse annotation from line:
" + line );
+ }
+ }
+
+ public List<BlameLine> getLines()
+ {
+
+ return lines;
+ }
+}
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommand.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommand.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommand.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommand.java
Sun May 23 19:02:24 2010
@@ -19,65 +19,66 @@ package org.apache.maven.scm.provider.ac
* under the License.
*/
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.command.blame.AbstractBlameCommand;
import org.apache.maven.scm.command.blame.BlameScmResult;
+import org.apache.maven.scm.log.ScmLogger;
import org.apache.maven.scm.provider.ScmProviderRepository;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
-import org.codehaus.plexus.util.cli.Commandline;
-
-import java.io.File;
+import org.apache.maven.scm.provider.accurev.AccuRev;
+import org.apache.maven.scm.provider.accurev.AccuRevException;
+import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository;
+import org.apache.maven.scm.provider.accurev.command.AbstractAccuRevCommand;
/**
* @author Evgeny Mandrikov
+ * @author Grant Gardner
* @since 1.4
*/
public class AccuRevBlameCommand
- extends AbstractBlameCommand
+ extends AbstractAccuRevCommand
{
- private final String accurevExecutable;
- public AccuRevBlameCommand( String accurevExec )
+ public AccuRevBlameCommand( ScmLogger logger )
{
- accurevExecutable = accurevExec;
+
+ super( logger );
}
- public BlameScmResult executeBlameCommand( ScmProviderRepository repo,
ScmFileSet workingDirectory, String filename )
- throws ScmException
+ @SuppressWarnings( "unchecked" )
+ @Override
+ protected BlameScmResult executeAccurevCommand(
AccuRevScmProviderRepository repository, ScmFileSet fileSet,
+ CommandParameters
parameters )
+ throws ScmException, AccuRevException
{
- Commandline cl = createCommandLine( accurevExecutable,
workingDirectory.getBasedir(), filename );
- AccuRevBlameConsumer consumer = new AccuRevBlameConsumer( getLogger()
);
+ AccuRev accuRev = repository.getAccuRev();
+ List/* <BlameLine> */lines = new ArrayList();
- CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
+ File file = new File( parameters.getString( CommandParameter.FILE ) );
- int exitCode;
+ boolean success = accuRev.annotate( fileSet.getBasedir(), file, lines
);
- try
- {
- exitCode = CommandLineUtils.executeCommandLine( cl, consumer,
stderr );
- }
- catch ( CommandLineException ex )
+ if ( success )
{
- throw new ScmException( "Error while executing command.", ex );
+ return new BlameScmResult( accuRev.getCommandLines(), lines );
}
- if ( exitCode != 0 )
+ else
{
- return new BlameScmResult( cl.toString(), "The accurev command
failed.", stderr.getOutput(), false );
+ return new BlameScmResult( accuRev.getCommandLines(), "AccuRev
Error", accuRev.getErrorOutput(), false );
}
- return new BlameScmResult( cl.toString(), consumer.getLines() );
}
- public static Commandline createCommandLine( String accurevExecutable,
File workingDirectory, String filename )
+ public BlameScmResult blame( ScmProviderRepository repository, ScmFileSet
fileSet, CommandParameters parameters )
+ throws ScmException
{
- Commandline cl = new Commandline();
- cl.setExecutable( accurevExecutable );
- cl.setWorkingDirectory( workingDirectory );
- cl.createArg().setValue( "annotate" );
- cl.createArg().setValue( filename );
- return cl;
+
+ return (BlameScmResult) execute( repository, fileSet, parameters );
}
}
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameConsumer.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameConsumer.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameConsumer.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/main/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameConsumer.java
Sun May 23 19:02:24 2010
@@ -1,79 +0,0 @@
-package org.apache.maven.scm.provider.accurev.command.blame;
-
-/*
- * 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.blame.BlameLine;
-import org.apache.maven.scm.log.ScmLogger;
-import org.apache.maven.scm.util.AbstractConsumer;
-import org.apache.regexp.RE;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author Evgeny Mandrikov
- * @since 1.4
- */
-public class AccuRevBlameConsumer
- extends AbstractConsumer
-{
- private static final String ACCUREV_TIMESTAMP_PATTERN = "yyyy/MM/dd
HH:mm:ss";
-
- /* 3 godin 2009/11/18 16:26:33 */
- private static final String LINE_PATTERN = "\\s+(\\d+)\\s+(\\w+)\\s+([^ ]+
[^ ]+)";
-
- /**
- * @see #LINE_PATTERN
- */
- private RE lineRegexp;
-
- private List lines = new ArrayList();
-
- public AccuRevBlameConsumer( ScmLogger logger )
- {
- super( logger );
- lineRegexp = new RE( LINE_PATTERN );
- }
-
- public void consumeLine( String line )
- {
- if ( lineRegexp.match( line ) )
- {
- String revision = lineRegexp.getParen( 1 ).trim();
- String author = lineRegexp.getParen( 2 ).trim();
- String dateStr = lineRegexp.getParen( 3 ).trim();
-
- if ( getLogger().isDebugEnabled() )
- {
- getLogger().debug( author + " " + dateStr );
- }
-
- Date date = parseDate( dateStr, null, ACCUREV_TIMESTAMP_PATTERN );
-
- lines.add( new BlameLine( date, revision, author ) );
- }
- }
-
- public List getLines()
- {
- return lines;
- }
-}
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/site/apt/index.apt
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/site/apt/index.apt?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/site/apt/index.apt
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/site/apt/index.apt
Sun May 23 19:02:24 2010
@@ -1,4 +1,4 @@
---------------
+ --------------
Maven SCM AccuRev provider
--------------
Grant Gardner
@@ -187,13 +187,15 @@ SCM Commands
List the changes promoted into a stream between timestamps.
- <<<accurev hist -s <stream> -t T1-T2>>>>
+ <<<accurev hist -s <stream> -t T1-T2>>>
<<NOTE>> This will not pickup changes promoted into a parent stream
<<TODO>> Filter results based on supplied fileSet.
- <<TODO>> Filter results based on URL's project path.
+ <<TODO>> Filter results based on URL's project path.
+
+ <<TODO>> Use diff -v <stream> -V <stream> -t T1-T2 to get files that have
changed upstream
* Diff
@@ -210,7 +212,7 @@ SCM Commands
If no versions specified and stream is in URL, then compare workspace to
that stream
* <<< accurev diff -v <urlStream> >>>
- If no versions specified and no strema in URL, then compare workspace to
basis stream
+ If no versions specified and no stream in URL, then compare workspace to
basis stream
* <<< accurev diff -b >>>
@@ -218,6 +220,14 @@ SCM Commands
<<<accurev defunct>>> the elements specified in the fileset, or the whole
basedir
+* Blame
+
+ <<<accurev annotate>>> the specified file
+
+ file must be in a workspace/reftree
+
+ <<TODO>> Question why blame uses CommandParameter.FILE instead of just the
fileset, also why not blame on a version?
+
* Branch
Not implemented.
@@ -228,4 +238,4 @@ SCM Commands
Troubleshooting
Generally to get yourself out of trouble you'll need to manipulate AccuRev
externally by moving workspaces around
- bumping versions, reparenting streams.
\ No newline at end of file
+ bumping versions, reparenting streams.
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLineTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLineTest.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLineTest.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AccuRevCommandLineTest.java
Sun May 23 19:02:24 2010
@@ -35,6 +35,7 @@ import java.util.Collections;
import java.util.List;
import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.command.blame.BlameLine;
import org.apache.maven.scm.log.ScmLogger;
import org.apache.maven.scm.provider.accurev.AccuRev;
import org.apache.maven.scm.provider.accurev.AccuRevStat;
@@ -530,4 +531,20 @@ public class AccuRevCommandLineTest
}
+ @Test
+ public void testAnnotate()
+ throws Exception
+ {
+
+ File basedir = new File( "/my/workspace" );
+ File file = new File( "src/main/java/foo.java" );
+
+ AccuRevCommandLineTester accuRevCL = new AccuRevCommandLineTester();
+ accuRevCL.annotate( basedir, file, new ArrayList<BlameLine>() );
+
+ Commandline lastCL = accuRevCL.getCommandline();
+ assertThat( lastCL.getWorkingDirectory(), is(
basedir.getCanonicalFile() ) );
+ assertThat( lastCL.getArguments(), is( new String[] { "annotate",
"-ftud", file.getPath() } ) );
+
+ }
}
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java?rev=947469&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
Sun May 23 19:02:24 2010
@@ -0,0 +1,66 @@
+
+package org.apache.maven.scm.provider.accurev.cli;
+
+/*
+ * 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 static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.command.blame.BlameLine;
+import org.apache.maven.scm.log.DefaultLog;
+import org.apache.maven.scm.provider.accurev.AccuRev;
+import org.junit.Test;
+
+/**
+ * @author Evgeny Mandrikov
+ * @author Grant Gardner
+ */
+public class AnnotateConsumerTest extends ScmTestCase {
+
+ @Test
+ public void testParse() throws Exception {
+
+ List<BlameLine> consumedLines = new ArrayList<BlameLine>();
+
+ AnnotateConsumer consumer = new AnnotateConsumer(consumedLines, new
DefaultLog());
+
+ AccuRevJUnitUtil.consume("/annotate.txt", consumer);
+
+ Assert.assertEquals(12, consumer.getLines().size());
+
+ BlameLine line1 = (BlameLine) consumer.getLines().get(0);
+ Assert.assertEquals("2", line1.getRevision());
+ Assert.assertEquals("godin", line1.getAuthor());
+ assertThat(line1.getDate(),
is(AccuRev.ACCUREV_TIME_SPEC.parse("2008/10/26 16:26:44")));
+
+ BlameLine line12 = (BlameLine) consumer.getLines().get(11);
+ Assert.assertEquals("1", line12.getRevision());
+ Assert.assertEquals("godin", line12.getAuthor());
+ assertThat(line12.getDate(),
is(AccuRev.ACCUREV_TIME_SPEC.parse("2008/10/17 11:41:50")));
+
+ }
+
+}
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/cli/AnnotateConsumerTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java?rev=947469&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
Sun May 23 19:02:24 2010
@@ -0,0 +1,132 @@
+package org.apache.maven.scm.provider.accurev.command.blame;
+
+/*
+ * 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 static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.InputStream;
+
+import org.apache.maven.scm.command.blame.BlameScmResult;
+import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository;
+import org.apache.maven.scm.provider.accurev.cli.AccuRevJUnitUtil;
+import org.apache.maven.scm.provider.accurev.command.AccuRevTckUtil;
+import org.apache.maven.scm.tck.command.blame.BlameCommandTckTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+...@runwith( JUnit4.class )
+public class AccuRevBlameCommandTckTest
+ extends BlameCommandTckTest
+{
+
+ private AccuRevTckUtil accurevTckTestUtil = new AccuRevTckUtil();
+
+ @Override
+ protected InputStream getCustomConfiguration()
+ throws Exception
+
+ {
+
+ return AccuRevJUnitUtil.getPlexusConfiguration();
+ }
+
+ @Override
+ @Test
+ public void testBlameCommand()
+ throws Exception
+ {
+
+ super.testBlameCommand();
+ }
+
+ @Override
+ protected void verifyResult( BlameScmResult result )
+ {
+
+ assertThat( result, is( not( nullValue() ) ) );
+ assertThat( result.getLines().size(), is( 1 ) );
+
+ }
+
+ @Override
+ @Before
+ public void setUp()
+ throws Exception
+ {
+
+ super.setUp();
+ }
+
+ @Override
+ protected File getWorkingCopy()
+ {
+
+ return accurevTckTestUtil.getWorkingCopy();
+ }
+
+ @Override
+ protected File getAssertionCopy()
+ {
+
+ return accurevTckTestUtil.getAssertionCopy();
+ }
+
+ @Override
+ public String getScmUrl()
+ throws Exception
+ {
+
+ return accurevTckTestUtil.getScmUrl();
+ }
+
+ @Override
+ public void initRepo()
+ throws Exception
+ {
+
+ accurevTckTestUtil.initRepo( getContainer() );
+ System.setProperty( AccuRevScmProviderRepository.TAG_PREFIX,
accurevTckTestUtil.getDepotName() + "_" );
+ }
+
+ @Override
+ @After
+ public void tearDown()
+ throws Exception
+ {
+
+ try
+ {
+ accurevTckTestUtil.tearDown();
+ accurevTckTestUtil.removeWorkSpace( getWorkingCopy() );
+ accurevTckTestUtil.removeWorkSpace( getAssertionCopy() );
+
+ }
+ finally
+ {
+ System.clearProperty( AccuRevScmProviderRepository.TAG_PREFIX );
+ super.tearDown();
+ }
+ }
+}
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTckTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java?rev=947469&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
Sun May 23 19:02:24 2010
@@ -0,0 +1,85 @@
+package org.apache.maven.scm.provider.accurev.command.blame;
+
+/*
+ * 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 static org.apache.maven.scm.provider.accurev.AddElementsAction.*;
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.blame.BlameLine;
+import org.apache.maven.scm.command.blame.BlameScmResult;
+import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository;
+import
org.apache.maven.scm.provider.accurev.command.AbstractAccuRevCommandTest;
+import org.jmock.Expectations;
+import org.junit.Test;
+
+public class AccuRevBlameCommandTest
+ extends AbstractAccuRevCommandTest
+{
+
+ @SuppressWarnings( "unchecked" )
+ @Test
+ public void testBlame()
+ throws Exception
+ {
+
+ final File file = new File( "src/main/java/Foo.java" );
+ final ScmFileSet testFileSet = new ScmFileSet( basedir, file );
+
+ final Date date = new Date();
+ final BlameLine blameLine = new BlameLine( date, "12", "theAuthor" );
+
+ context.checking( new Expectations()
+ {
+
+ {
+ one( accurev ).annotate( with( basedir ), with( file ), with(
any( List.class ) ) );
+ will( doAll( addElementsTo( 2, blameLine ), returnValue( true
) ) );
+ inSequence( sequence );
+
+ }
+ } );
+
+ AccuRevScmProviderRepository repo = new AccuRevScmProviderRepository();
+ repo.setStreamName( "myStream" );
+ repo.setAccuRev( accurev );
+ repo.setProjectPath( "/project/dir" );
+
+ AccuRevBlameCommand command = new AccuRevBlameCommand( getLogger() );
+
+ CommandParameters commandParameters = new CommandParameters();
+ commandParameters.setString( CommandParameter.FILE, file.getPath() );
+ BlameScmResult result = command.blame( repo, testFileSet,
commandParameters );
+
+ context.assertIsSatisfied();
+
+ assertThat( result.isSuccess(), is( true ) );
+ assertThat( result.getLines().size(), is( 1 ) );
+ assertThat( ( (BlameLine) result.getLines().get( 0 ) ), is( blameLine
) );
+
+ }
+}
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/blame/AccuRevBlameCommandTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/commands/blame/AccuRevBlameConsumerTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/commands/blame/AccuRevBlameConsumerTest.java?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/commands/blame/AccuRevBlameConsumerTest.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/commands/blame/AccuRevBlameConsumerTest.java
Sun May 23 19:02:24 2010
@@ -1,67 +0,0 @@
-package org.apache.maven.scm.provider.accurev.commands.blame;
-
-/*
- * 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 java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-
-import junit.framework.Assert;
-
-import org.apache.maven.scm.ScmTestCase;
-import org.apache.maven.scm.command.blame.BlameLine;
-import org.apache.maven.scm.log.DefaultLog;
-import
org.apache.maven.scm.provider.accurev.command.blame.AccuRevBlameConsumer;
-
-/**
- * @author Evgeny Mandrikov
- */
-public class AccuRevBlameConsumerTest
- extends ScmTestCase
-{
-
- public void testParse()
- throws Exception
- {
- File testFile =
getTestFile("src/test/resources/accurev/annotatelog.txt");
-
- AccuRevBlameConsumer consumer = new AccuRevBlameConsumer(new
DefaultLog());
-
- FileInputStream fis = new FileInputStream(testFile);
- BufferedReader in = new BufferedReader(new InputStreamReader(fis));
- String s = in.readLine();
- while (s != null) {
- consumer.consumeLine(s);
- s = in.readLine();
- }
-
- Assert.assertEquals(12, consumer.getLines().size());
-
- BlameLine line1 = (BlameLine) consumer.getLines().get(0);
- Assert.assertEquals("2", line1.getRevision());
- Assert.assertEquals("godin", line1.getAuthor());
-
- BlameLine line12 = (BlameLine) consumer.getLines().get(11);
- Assert.assertEquals("1", line12.getRevision());
- Assert.assertEquals("godin", line12.getAuthor());
- }
-
-}
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/accurev/annotatelog.txt
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/accurev/annotatelog.txt?rev=947469&r1=947468&r2=947469&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/accurev/annotatelog.txt
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/accurev/annotatelog.txt
Sun May 23 19:02:24 2010
@@ -1,12 +0,0 @@
- 2 godin 2008/10/26 16:26:44 <project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 2 godin 2008/10/26 16:26:44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
- 2 godin 2008/10/26 16:26:44
<modelVersion>4.0.0</modelVersion>
- 3 godin 2009/11/18 16:26:33
- 3 godin 2009/11/18 16:26:33 <distributionManagement>
- 3 godin 2009/11/18 16:26:33 <repository>
- 3 godin 2009/11/18 16:26:33 <id>localhost</id>
- 3 godin 2009/11/18 16:26:33 <name>dumping to
target</name>
- 3 godin 2009/11/18 16:26:33
<url>file://${basedir}/target/repo/</url>
- 3 godin 2009/11/18 16:26:33 </repository>
- 3 godin 2009/11/18 16:26:33 </distributionManagement>
- 1 godin 2008/10/17 11:41:50 </project>
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt?rev=947469&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
Sun May 23 19:02:24 2010
@@ -0,0 +1,12 @@
+ 2 godin 2008/10/26 16:26:44 <project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ 2 godin 2008/10/26 16:26:44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ 2 godin 2008/10/26 16:26:44
<modelVersion>4.0.0</modelVersion>
+ 3 godin 2009/11/18 16:26:33
+ 3 godin 2009/11/18 16:26:33 <distributionManagement>
+ 3 godin 2009/11/18 16:26:33 <repository>
+ 3 godin 2009/11/18 16:26:33 <id>localhost</id>
+ 3 godin 2009/11/18 16:26:33 <name>dumping to
target</name>
+ 3 godin 2009/11/18 16:26:33
<url>file://${basedir}/target/repo/</url>
+ 3 godin 2009/11/18 16:26:33 </repository>
+ 3 godin 2009/11/18 16:26:33 </distributionManagement>
+ 1 godin 2008/10/17 11:41:50 </project>
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/resources/annotate.txt
------------------------------------------------------------------------------
svn:mime-type = text/plain