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;
+    }
+
 }