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();
+    }
 }


Reply via email to