Author: bodewig
Date: Wed Oct 21 18:50:28 2009
New Revision: 828141

URL: http://svn.apache.org/viewvc?rev=828141&view=rev
Log:
tar doesn't always recognize the target isn't up to date.  PR 48035

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

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=828141&r1=828140&r2=828141&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Oct 21 18:50:28 2009
@@ -507,6 +507,11 @@
    long file names in GNU longfile mode.
    Bugzilla Report 47653.
 
+ * The tar task failed to recognize that the archive had to be
+   (re-)created in some cases where the sources are filesystem based
+   resources but not filesets.
+   Bugzilla Report 48035. 
+
 Other changes:
 --------------
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java?rev=828141&r1=828140&r2=828141&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Tar.java Wed Oct 21 
18:50:28 2009
@@ -581,9 +581,13 @@
                 Vector files = (Vector) basedirToFilesMap.get(base);
                 if (files == null) {
                     files = new Vector();
-                    basedirToFilesMap.put(base, new Vector());
+                    basedirToFilesMap.put(base, files);
+                }
+                if (base == Copy.NULL_FILE_PLACEHOLDER) {
+                    files.add(r.getFile().getAbsolutePath());
+                } else {
+                    files.add(r.getName());
                 }
-                files.add(r.getName());
             }
             iter = basedirs.iterator();
             while (iter.hasNext()) {

Modified: ant/core/trunk/src/tests/antunit/taskdefs/tar-test.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/tar-test.xml?rev=828141&r1=828140&r2=828141&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/tar-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/tar-test.xml Wed Oct 21 18:50:28 
2009
@@ -22,6 +22,7 @@
   <import file="../antunit-base.xml" />
 
   <target name="setUp">
+    <mkdir dir="${input}" />
     <mkdir dir="${output}" />
   </target>
 
@@ -72,4 +73,21 @@
       </cond:resourceexists>
     </au:assertFalse>
   </target>
+
+  <target name="testSingleFile" depends="setUp"
+          
description="https://issues.apache.org/bugzilla/show_bug.cgi?id=48035";>
+    <touch file="${input}/foo.txt"/>
+    <tar destfile="${output}/foo.tar">
+      <file file="${input}/foo.txt"/>
+    </tar>
+    <au:assertFileExists file="${output}/foo.tar"/>
+    <copy file="${output}/foo.tar" tofile="${output}/bar.tar"
+          preservelastmodified="true"/>
+    <sleep seconds="2"/>
+    <touch file="${input}/foo.txt"/>
+    <tar destfile="${output}/foo.tar">
+      <file file="${input}/foo.txt"/>
+    </tar>
+    <au:assertDestIsOutofdate src="${output}/foo.tar" 
dest="${output}/bar.tar"/>
+  </target>
 </project>


Reply via email to