Hi all,

after a long time a small contribution again :-)

Unfortunately I was unable to create a test (at least one integrated with the Ant build) for this and got some unexpected errors while trying to do so.

So I would like someone to have a look at it. I don't think it should affect something else, but it seems I'm not really up-to-date with Ant :-(

The problem:

If you update a jar file and one of the filesets that are passed to the task are empty it throws a NPE.

Attached files:
- jar.patch.txt - the patch to Jar.java
- jar.test.patch - How I tried to integrate a test for that case - maybe
  someone can explain what I did wrong?
- testcase.jar - a simple testcase, throws if NPE if Ant is run for the
  second time.

Nico
Index: Zip.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Zip.java,v
retrieving revision 1.97
diff -u -r1.97 Zip.java
--- Zip.java    19 Feb 2003 07:57:29 -0000      1.97
+++ Zip.java    26 Feb 2003 00:13:17 -0000
@@ -750,6 +750,7 @@
 
         for (int i = 0; i < filesets.length; i++) {
             if (initialResources[i].length == 0) {
+                newerResources[i] = new Resource[] {};
                 continue;
             }
             
Index: JarTest.java
===================================================================
RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/JarTest.java,v
retrieving revision 1.17
diff -u -r1.17 JarTest.java
--- JarTest.java        20 Feb 2003 17:15:46 -0000      1.17
+++ JarTest.java        26 Feb 2003 00:24:23 -0000
@@ -214,4 +214,9 @@
                      "testRecreateZipfilesetWithUpdateNewerFile");
     }
 
+    public void testCreateWithEmptyFileset() {
+        executeTarget("testCreateWithEmptyFilesetSetUp");
+        executeTarget("testCreateWithEmptyFileset");
+        executeTarget("testCreateWithEmptyFileset");
+    }
 }
Index: jar.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/jar.xml,v
retrieving revision 1.8
diff -u -r1.8 jar.xml
--- jar.xml     23 Jan 2003 15:03:28 -0000      1.8
+++ jar.xml     26 Feb 2003 00:26:57 -0000
@@ -5,6 +5,8 @@
   <property name="tmp.jar" location="tmp.jar"/>
   <property name="tmp.dir" location="jartmp"/>
   <property name="tmp.zip" location="tmp.zip"/>
+  <property name="tmp1.dir" location="jartmp1"/>
+  <property name="tmp2.dir" location="jartmp2"/>
 
   <target name="test1">
     <jar/>
@@ -166,6 +168,25 @@
     <delete file="${tmp.jar}" />
     <delete dir="${tmp.dir}"/>
     <delete file="${tmp.zip}" />
+    <delete dir="${tmp1.dir}"/>
+    <delete dir="${tmp2.dir}"/>
+  </target>
+
+  <target name="testCreateWithEmptyFilesetSetUp">
+    <mkdir dir="${tmp1.dir}"/>
+    <mkdir dir="${tmp2.dir}"/>
+    <echo file="${tmp2.dir}/foo.txt" message="foo"/>
+  </target>
+
+  <target name="testCreateWithEmptyFileset">
+    <jar destfile="${tmp.jar}">
+      <fileset dir="${tmp1.dir}">
+        <include name="**/*.doesNotExist"/>
+      </fileset>
+      <fileset dir="${tmp2.dir}">
+        <include name="**/foo.txt"/>
+      </fileset>
+    </jar>
   </target>
 
 </project>

Attachment: testcase.jar
Description: application/jar



Reply via email to