You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2014/01/01 16:04:30 UTC

svn commit: r1554629 - in /ant/core/trunk: WHATSNEW src/main/org/apache/tools/ant/taskdefs/Concat.java src/tests/antunit/taskdefs/concat-test.xml

Author: bodewig
Date: Wed Jan  1 15:04:29 2014
New Revision: 1554629

URL: http://svn.apache.org/r1554629
Log:
fixlastline didn't work when the no-arg read() method of MultiReader was used.  PR 54672

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Concat.java
    ant/core/trunk/src/tests/antunit/taskdefs/concat-test.xml

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=1554629&r1=1554628&r2=1554629&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Jan  1 15:04:29 2014
@@ -32,6 +32,10 @@ Fixed bugs:
    directory of the given jarfile.
    Bugzilla Report 55049
 
+ * <concat>'s fixlastline="true" didn't work when using certain filter
+   readers.
+   Bugzilla Report 54672
+
 Other changes:
 --------------
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Concat.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Concat.java?rev=1554629&r1=1554628&r2=1554629&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Concat.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Concat.java Wed Jan  1 15:04:29 2014
@@ -255,12 +255,12 @@ public class Concat extends Task impleme
          */
         public int read() throws IOException {
             if (needAddSeparator) {
-                int ret = eolString.charAt(lastPos++);
                 if (lastPos >= eolString.length()) {
                     lastPos = 0;
                     needAddSeparator = false;
+                } else {
+                    return eolString.charAt(lastPos++);
                 }
-                return ret;
             }
             while (getReader() != null) {
                 int ch = getReader().read();
@@ -268,7 +268,8 @@ public class Concat extends Task impleme
                     nextReader();
                     if (isFixLastLine() && isMissingEndOfLine()) {
                         needAddSeparator = true;
-                        lastPos = 0;
+                        lastPos = 1;
+                        return eolString.charAt(0);
                     }
                 } else {
                     addLastChar((char) ch);

Modified: ant/core/trunk/src/tests/antunit/taskdefs/concat-test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/concat-test.xml?rev=1554629&r1=1554628&r2=1554629&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/concat-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/concat-test.xml Wed Jan  1 15:04:29 2014
@@ -76,6 +76,48 @@
     </au:assertTrue>
   </target>
 
+  <target name="-fixlastline-setup">
+    <mkdir dir="${input}"/>
+    <mkdir dir="${output}"/>
+    <echo file="${input}/1">1</echo>
+    <echo file="${input}/2">2</echo>
+  </target>
+
+  <target name="testFixLastLineActuallyFixes" depends="-fixlastline-setup">
+    <au:assertTrue>
+      <resourcesmatch>
+        <string>1${line.separator}2${line.separator}</string>
+        <concat fixlastline="true">
+          <filelist dir="${input}">
+            <file name="1"/>
+            <file name="2"/>
+          </filelist>
+        </concat>
+      </resourcesmatch>
+    </au:assertTrue>
+  </target>
+
+  <target name="testFixLastLineActuallyFixesWithFilterChain"
+          depends="-fixlastline-setup"
+          description="https://issues.apache.org/bugzilla/show_bug.cgi?id=54672">
+    <au:assertTrue>
+      <resourcesmatch>
+        <string>1${line.separator}2${line.separator}</string>
+        <concat fixlastline="true">
+          <filelist dir="${input}">
+            <file name="1"/>
+            <file name="2"/>
+          </filelist>
+          <filterchain>
+	    <tokenfilter>
+	      <ignoreblank/>
+	    </tokenfilter>
+	  </filterchain>
+        </concat>
+      </resourcesmatch>
+    </au:assertTrue>
+  </target>
+
   <target name="testIgnoreEmptyFalseFileIsCreated">
     <mkdir dir="${input}" />
     <mkdir dir="${output}" />