You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2013/01/11 18:27:46 UTC

svn commit: r1432175 - /commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestampTest.java

Author: bodewig
Date: Fri Jan 11 17:27:46 2013
New Revision: 1432175

URL: http://svn.apache.org/viewvc?rev=1432175&view=rev
Log:
adjust test expectations to the difference in InfoZIP's and ZipEntry's interpretation of the LFH time

Modified:
    commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestampTest.java

Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestampTest.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestampTest.java?rev=1432175&r1=1432174&r2=1432175&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestampTest.java (original)
+++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestampTest.java Fri Jan 11 17:27:46 2013
@@ -102,8 +102,7 @@ public class X5455_ExtendedTimestampTest
                 ZipArchiveEntry zae = en.nextElement();
                 String name = zae.getName();
                 X5455_ExtendedTimestamp xf = (X5455_ExtendedTimestamp) zae.getExtraField(X5455);
-
-                Date z = zae.getLastModifiedDate();
+                Date z = adjustFromGMTToExpectedOffset(zae.getLastModifiedDate());
                 Date m = xf.getModifyJavaTime();
                 Date a = xf.getAccessJavaTime();
 
@@ -124,7 +123,7 @@ public class X5455_ExtendedTimestampTest
                         switch (year) {
                             case 2107:
                                 // Zip time is okay up to 2107.
-                                assertEquals(year + "-01-01/00:00:02 +0000", zipTime);
+                                assertEquals(year  + "-01-01/00:00:02 +0000", zipTime);
                                 // But the X5455 data has overflowed:
                                 assertEquals("1970-11-24/17:31:45 +0000", modTime);
                                 assertEquals("1970-11-24/17:31:47 +0000", accTime);
@@ -458,4 +457,21 @@ public class X5455_ExtendedTimestampTest
     }
 
     private static boolean isFlagSet(byte data, byte flag) { return (data & flag) == flag; }
+
+    /**
+     * InfoZIP seems to adjust the time stored inside the LFH and CD
+     * to GMT when writing ZIPs while java.util.zip.ZipEntry thinks it
+     * was in local time.
+     *
+     * The archive read in {@see #testSampleFile} has been created
+     * with GMT-8 so we need to adjust for the difference.
+     */
+    private static Date adjustFromGMTToExpectedOffset(Date from) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(from);
+        // we may even need to take DST into account for the southern hemisphere
+        cal.add(Calendar.MILLISECOND, cal.get(Calendar.ZONE_OFFSET));
+        cal.add(Calendar.HOUR, 8);
+        return cal.getTime();
+    }
 }