From: Dominik Stadler Date: Mon, 15 Feb 2021 15:23:49 +0000 (+0000) Subject: Do not fail test which compares two documents if the timestamp in the ZIP header... X-Git-Tag: REL_5_1_0~377 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=37d2d474dc7abbd8b51d8d1004c471976f9382d8;p=poi.git Do not fail test which compares two documents if the timestamp in the ZIP header field is different git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886532 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java index c79abea7dc..a82a2a8681 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java @@ -39,6 +39,7 @@ import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.FileMagic; import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.formula.FormulaParseException; @@ -1827,8 +1828,25 @@ public abstract class BaseTestBugzillaIssues { out1.flush(); out2.flush(); - assertArrayEquals(out1.toByteArray(), out2.toByteArray()); + // to avoid flaky tests if the documents are written at slightly different timestamps + // we clear some bytes which contain timestamps + assertArrayEquals( + removeTimestamp(out1.toByteArray()), + removeTimestamp(out2.toByteArray())); } } } -} \ No newline at end of file + + private byte[] removeTimestamp(byte[] bytes) { + if (FileMagic.valueOf(bytes) == FileMagic.OOXML) { + // This removes the timestamp in the header of the ZIP-Format + // see "Local file header" at https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT + bytes[10] = 0; + bytes[11] = 0; + bytes[12] = 0; + bytes[13] = 0; + } + + return bytes; + } +}