--- a/jdk/test/java/util/zip/ZipFile/ReadZip.java Mon Jun 29 15:08:52 2009 +0100
+++ b/jdk/test/java/util/zip/ZipFile/ReadZip.java Mon Jun 29 19:57:58 2009 -0700
@@ -22,7 +22,7 @@
*/
/* @test
- @bug 4241361 4842702
+ @bug 4241361 4842702 4985614 6646605 5032358
@summary Make sure we can read a zip file.
*/
@@ -30,7 +30,7 @@
import java.util.zip.*;
public class ReadZip {
- private static void Unreached (Object o)
+ private static void unreached (Object o)
throws Exception
{
// Should never get here
@@ -42,10 +42,10 @@
"input.zip"));
// Make sure we throw NPE on null objects
- try { Unreached (zf.getEntry(null)); }
+ try { unreached (zf.getEntry(null)); }
catch (NullPointerException e) {}
- try { Unreached (zf.getInputStream(null)); }
+ try { unreached (zf.getInputStream(null)); }
catch (NullPointerException e) {}
ZipEntry ze = zf.getEntry("ReadZip.java");
@@ -53,5 +53,65 @@
throw new Exception("cannot read from zip file");
}
zf.close();
+
+ // Make sure we can read the zip file that has some garbage
+ // bytes padded at the end.
+ FileInputStream fis = new FileInputStream(
+ new File(System.getProperty("test.src", "."),
+ "input.zip"));
+ File newZip = new File(System.getProperty("test.src", "."),
+ "input2.zip");
+ FileOutputStream fos = new FileOutputStream(newZip);
+
+ byte[] buf = new byte[1024];
+ int n = 0;
+ while ((n = fis.read(buf)) != -1) {
+ fos.write(buf, 0, n);
+ }
+ fis.close();
+ // pad some bytes
+ fos.write(1); fos.write(3); fos.write(5); fos.write(7);
+ fos.close();
+ try {
+ zf = new ZipFile(newZip);
+ ze = zf.getEntry("ReadZip.java");
+ if (ze == null) {
+ throw new Exception("cannot read from zip file");
+ }
+ } finally {
+ zf.close();
+ newZip.delete();
+ }
+
+ // Read zip file comment
+ try {
+
+ ZipOutputStream zos = new ZipOutputStream(
+ new FileOutputStream(newZip));
+ ze = new ZipEntry("ZipEntry");
+ zos.putNextEntry(ze);
+ zos.write(1); zos.write(2); zos.write(3); zos.write(4);
+ zos.closeEntry();
+ zos.setComment("This is the comment for testing");
+ zos.close();
+
+ zf = new ZipFile(newZip);
+ ze = zf.getEntry("ZipEntry");
+ if (ze == null)
+ throw new Exception("cannot read entry from zip file");
+ if (!"This is the comment for testing".equals(zf.getComment()))
+ throw new Exception("cannot read comment from zip file");
+ } finally {
+ zf.close();
+ newZip.delete();
+ }
+
+ // Throw a FNF exception when read a non-existing zip file
+ try { unreached (new ZipFile(
+ new File(System.getProperty("test.src", "."),
+ "input"
+ + String.valueOf(new java.util.Random().nextInt())
+ + ".zip")));
+ } catch (FileNotFoundException fnfe) {}
}
}