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/10 15:58:31 UTC
svn commit: r1200357 - in
/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/status/
test/java/org/apache/maven/scm/provider/git/gitexe/command/status/
Author: olamy
Date: Thu Nov 10 14:58:30 2011
New Revision: 1200357
URL: http://svn.apache.org/viewvc?rev=1200357&view=rev
Log:
[SCM-642] GitSatusConsumer does not report deleted file
Submitted by Bertrand Paquet.
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/status/GitStatusConsumer.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/status/GitStatusConsumerTest.java
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/status/GitStatusConsumer.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/status/GitStatusConsumer.java?rev=1200357&r1=1200356&r2=1200357&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/status/GitStatusConsumer.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/status/GitStatusConsumer.java Thu Nov 10 14:58:30 2011
@@ -85,9 +85,9 @@ public class GitStatusConsumer
try
{
- addedRegexp = new RE( ADDED_PATTERN );
+ addedRegexp = new RE( ADDED_PATTERN );
modifiedRegexp = new RE( MODIFIED_PATTERN );
- deletedRegexp = new RE( DELETED_PATTERN );
+ deletedRegexp = new RE( DELETED_PATTERN );
}
catch ( RESyntaxException ex )
{
@@ -101,7 +101,9 @@ public class GitStatusConsumer
// StreamConsumer Implementation
// ----------------------------------------------------------------------
- /** {@inheritDoc} */
+ /**
+ * {@inheritDoc}
+ */
public void consumeLine( String line )
{
if ( logger.isDebugEnabled() )
@@ -134,11 +136,24 @@ public class GitStatusConsumer
}
// If the file isn't a file; don't add it.
- if ( file != null )
+ if ( file != null && status != null )
{
- if ( workingDirectory != null && !new File( workingDirectory, file ).isFile() )
+ if ( workingDirectory != null )
{
- return;
+ if ( status == ScmFileStatus.DELETED )
+ {
+ if ( new File( workingDirectory, file ).isFile() )
+ {
+ return;
+ }
+ }
+ else
+ {
+ if ( !new File( workingDirectory, file ).isFile() )
+ {
+ return;
+ }
+ }
}
changedFiles.add( new ScmFile( file, status ) );
Modified: 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/status/GitStatusConsumerTest.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/status/GitStatusConsumerTest.java?rev=1200357&r1=1200356&r2=1200357&view=diff
==============================================================================
--- 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/status/GitStatusConsumerTest.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/status/GitStatusConsumerTest.java Thu Nov 10 14:58:30 2011
@@ -23,10 +23,12 @@ import org.apache.maven.scm.ScmFile;
import org.apache.maven.scm.ScmFileStatus;
import org.apache.maven.scm.log.DefaultLog;
import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
+import java.io.IOException;
import java.util.List;
/**
@@ -35,21 +37,148 @@ import java.util.List;
public class GitStatusConsumerTest
extends PlexusTestCase
{
-
- public void testConsumerAddedFile()
+
+ public void testConsumerAddedFile()
{
GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), null );
-
+
consumer.consumeLine( "# new file: project.xml" );
-
+
List<ScmFile> changedFiles = consumer.getChangedFiles();
-
+
+ assertNotNull( changedFiles );
+ assertEquals( 1, changedFiles.size() );
+ }
+
+ public void testConsumerAddedFileWithDirectoryAndNoFile()
+ throws IOException
+ {
+ File dir = createTempDirectory();
+
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), dir );
+
+ consumer.consumeLine( "# new file: project.xml" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 0, changedFiles.size() );
+
+ FileUtils.deleteDirectory( dir );
+ }
+
+ public void testConsumerAddedFileWithDirectoryAndFile()
+ throws IOException
+ {
+ File dir = createTempDirectory();
+ FileUtils.fileAppend( dir.getAbsolutePath() + File.separator + "project.xml", "data" );
+
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), dir );
+
+ consumer.consumeLine( "# new file: project.xml" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 1, changedFiles.size() );
+
+ FileUtils.deleteDirectory( dir );
+ }
+
+ public void testConsumerModifiedFile()
+ {
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), null );
+
+ consumer.consumeLine( "# modified: project.xml" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 1, changedFiles.size() );
+ }
+
+ public void testConsumerModifiedFileWithDirectoryAndNoFile()
+ throws IOException
+ {
+ File dir = createTempDirectory();
+
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), dir );
+
+ consumer.consumeLine( "# modified: project.xml" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 0, changedFiles.size() );
+
+ FileUtils.deleteDirectory( dir );
+ }
+
+ public void testConsumerModifiedFileWithDirectoryAndFile()
+ throws IOException
+ {
+ File dir = createTempDirectory();
+ FileUtils.fileAppend( dir.getAbsolutePath() + File.separator + "project.xml", "data" );
+
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), dir );
+
+ consumer.consumeLine( "# modified: project.xml" );
+
+ List changedFiles = consumer.getChangedFiles();
+
assertNotNull( changedFiles );
assertEquals( 1, changedFiles.size() );
+
+ FileUtils.deleteDirectory( dir );
}
-
+
+ public void testConsumerRemovedFile()
+ {
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), null );
+
+ consumer.consumeLine( "# deleted: Capfile" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 1, changedFiles.size() );
+ }
+
+ public void testConsumerRemovedFileWithDirectoryAndNoFile()
+ throws IOException
+ {
+ File dir = createTempDirectory();
+
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), dir );
+
+ consumer.consumeLine( "# deleted: Capfile" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 1, changedFiles.size() );
+ FileUtils.deleteDirectory( dir );
+ }
+
+ public void testConsumerRemovedFileWithDirectoryAndFile()
+ throws IOException
+ {
+ File dir = createTempDirectory();
+ FileUtils.fileAppend( dir.getAbsolutePath() + File.separator + "Capfile", "data" );
+
+ GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), dir );
+
+ consumer.consumeLine( "# deleted: Capfile" );
+
+ List changedFiles = consumer.getChangedFiles();
+
+ assertNotNull( changedFiles );
+ assertEquals( 0, changedFiles.size() );
+ FileUtils.deleteDirectory( dir );
+ }
+
public void testLog1Consumer()
- throws Exception
+ throws Exception
{
GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), null );
@@ -65,15 +194,15 @@ public class GitStatusConsumerTest
}
List<ScmFile> changedFiles = consumer.getChangedFiles();
-
+
assertEquals( 2, changedFiles.size() );
testScmFile( (ScmFile) changedFiles.get( 0 ), "project.xml", ScmFileStatus.ADDED );
- testScmFile( (ScmFile) changedFiles.get( 1 ), "readme.txt" , ScmFileStatus.MODIFIED );
- }
-
+ testScmFile( (ScmFile) changedFiles.get( 1 ), "readme.txt", ScmFileStatus.MODIFIED );
+ }
+
public void testEmptyLogConsumer()
- throws Exception
+ throws Exception
{
GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), null );
@@ -89,13 +218,13 @@ public class GitStatusConsumerTest
}
List<ScmFile> changedFiles = consumer.getChangedFiles();
-
+
assertEquals( 0, changedFiles.size() );
- }
-
-
+ }
+
+
public void testLog2Consumer()
- throws Exception
+ throws Exception
{
GitStatusConsumer consumer = new GitStatusConsumer( new DefaultLog(), null );
@@ -111,28 +240,37 @@ public class GitStatusConsumerTest
}
List<ScmFile> changedFiles = consumer.getChangedFiles();
-
+
assertEquals( 4, changedFiles.size() );
- testScmFile( (ScmFile) changedFiles.get( 0 )
- , "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/add/GitAddCommand.java"
- , ScmFileStatus.MODIFIED );
- testScmFile( (ScmFile) changedFiles.get( 1 )
- , "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java"
- , ScmFileStatus.MODIFIED );
- testScmFile( (ScmFile) changedFiles.get( 2 )
- , "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInConsumer.java"
- , ScmFileStatus.DELETED );
- testScmFile( (ScmFile) changedFiles.get( 3 )
- , "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java"
- , ScmFileStatus.MODIFIED );
- }
-
-
+ testScmFile( (ScmFile) changedFiles.get( 0 ),
+ "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/add/GitAddCommand.java",
+ ScmFileStatus.MODIFIED );
+ testScmFile( (ScmFile) changedFiles.get( 1 ),
+ "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInCommand.java",
+ ScmFileStatus.MODIFIED );
+ testScmFile( (ScmFile) changedFiles.get( 2 ),
+ "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkin/GitCheckInConsumer.java",
+ ScmFileStatus.DELETED );
+ testScmFile( (ScmFile) changedFiles.get( 3 ),
+ "maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/status/GitStatusConsumer.java",
+ ScmFileStatus.MODIFIED );
+ }
+
+
private void testScmFile( ScmFile fileToTest, String expectedFilePath, ScmFileStatus expectedStatus )
{
assertEquals( expectedFilePath, fileToTest.getPath() );
assertEquals( expectedStatus, fileToTest.getStatus() );
}
-
+
+ private File createTempDirectory()
+ throws IOException
+ {
+ File dir = File.createTempFile( "gitexe", "test" );
+ dir.delete();
+ dir.mkdir();
+ return dir;
+ }
+
}