You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2015/04/12 17:29:52 UTC

svn commit: r1673022 - in /maven/plugins/trunk/maven-assembly-plugin/src: main/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStream.java test/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStreamTest.java

Author: krosenvold
Date: Sun Apr 12 15:29:52 2015
New Revision: 1673022

URL: http://svn.apache.org/r1673022
Log:
[MASSEMBLY-753] Fixed with unit test

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStream.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStreamTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStream.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStream.java?rev=1673022&r1=1673021&r2=1673022&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStream.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStream.java Sun Apr 12 15:29:52 2015
@@ -30,6 +30,7 @@ class LinuxLineFeedInputStream
 {
 
     private boolean slashNSeen = false;
+    private boolean slashRSeen = false;
 
     private boolean eofSeen = false;
 
@@ -53,6 +54,7 @@ class LinuxLineFeedInputStream
             return target;
         }
         slashNSeen = target == '\n';
+        slashRSeen = target == '\r';
         return target;
     }
 
@@ -60,28 +62,33 @@ class LinuxLineFeedInputStream
     public int read()
         throws IOException
     {
+        boolean prevWasSlashR = slashRSeen;
         if ( eofSeen )
         {
-            return eofGame();
+            return eofGame(prevWasSlashR);
         }
         else
         {
             int target = readWithUpdate();
             if ( eofSeen )
             {
-                return eofGame();
+                return eofGame(prevWasSlashR);
             }
-            if ( target == '\r' )
+            if (slashRSeen)
             {
-                target = readWithUpdate();
+                return '\n';
+            }
+
+            if ( prevWasSlashR && slashNSeen){ // Lone /r
+                return read();
             }
             return target;
         }
     }
 
-    private int eofGame()
+    private int eofGame(boolean previousWasSlashR)
     {
-        if ( !ensureLineFeedAtEndOfFile )
+        if ( previousWasSlashR || !ensureLineFeedAtEndOfFile )
         {
             return -1;
         }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStreamTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStreamTest.java?rev=1673022&r1=1673021&r2=1673022&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStreamTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/LinuxLineFeedInputStreamTest.java Sun Apr 12 15:29:52 2015
@@ -20,10 +20,13 @@ package org.apache.maven.plugin.assembly
  */
 
 import junit.framework.TestCase;
+import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 
+import static org.junit.Assert.assertEquals;
+
 public class LinuxLineFeedInputStreamTest
     extends TestCase
 {
@@ -40,22 +43,27 @@ public class LinuxLineFeedInputStreamTes
         assertEquals( "a\nbc\n", roundtrip( "a\r\nbc" ) );
     }
 
-    public void testMultipleBlankLines()
+    public void testCrOnly()
         throws Exception
     {
-        assertEquals( "a\n\nbc\n", roundtrip( "a\r\n\r\nbc" ) );
+        assertEquals( "a\nb\n", roundtrip( "a\rb" ) );
     }
 
-    public void testTwoLinesAtEnd()
+    public void testCrAtEnd() throws Exception {
+        assertEquals( "a\n", roundtrip( "a\r" ) );
+    }
+
+
+    public void testMultipleBlankLines()
         throws Exception
     {
-        assertEquals( "a\n\n", roundtrip( "a\r\n\r\n" ) );
+        assertEquals( "a\n\nbc\n", roundtrip( "a\r\n\r\nbc" ) );
     }
 
-    public void testMalformed()
+    public void testTwoLinesAtEnd()
         throws Exception
     {
-        assertEquals( "abc", roundtrip( "a\rbc", false ) );
+        assertEquals( "a\n\n", roundtrip( "a\r\n\r\n" ) );
     }
 
     public void testRetainLineFeed()