]> source.dussan.org Git - poi.git/commitdiff
More tests for reproducible outputs
authorDominik Stadler <centic@apache.org>
Wed, 20 Nov 2024 20:29:45 +0000 (20:29 +0000)
committerDominik Stadler <centic@apache.org>
Wed, 20 Nov 2024 20:29:45 +0000 (20:29 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1921981 13f79535-47bb-0310-9956-ffa450edef68

poi/src/test/java/org/apache/poi/sl/usermodel/BaseTestSlideShow.java
poi/src/test/java/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

index 0654012411035a96986645e488f095b02c1559ca..b4ac148215d0a4497bf3006e950e8092352edd59 100644 (file)
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.sl.usermodel;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -29,11 +30,13 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.common.usermodel.fonts.FontInfo;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.usermodel.PictureData.PictureType;
 import org.apache.poi.sl.usermodel.TabStop.TabStopType;
+import org.apache.poi.util.Reproducibility;
 import org.junit.jupiter.api.Test;
 
 public abstract class BaseTestSlideShow<
@@ -199,4 +202,29 @@ public abstract class BaseTestSlideShow<
                 : null;
     }
 
+    // ensure a simple slide-show can be reproducibly written
+    @Test
+    void testWriteDocumentTwice() throws Exception {
+        try (SlideShow<S,P> ppt = createSlideShow()) {
+            ppt.createSlide();
+
+            Reproducibility.runWithSourceDateEpoch(
+                    () -> {
+                        try (UnsynchronizedByteArrayOutputStream out1 = UnsynchronizedByteArrayOutputStream.builder().get();
+                                UnsynchronizedByteArrayOutputStream out2 = UnsynchronizedByteArrayOutputStream.builder().get()) {
+                            ppt.write(out1);
+                            ppt.write(out2);
+
+                            out1.flush();
+                            out2.flush();
+
+                            // to avoid flaky tests if the documents are written at slightly different timestamps
+                            // we clear some bytes which contain timestamps
+                            assertArrayEquals(
+                                    out1.toByteArray(),
+                                    out2.toByteArray());
+                        }
+                    });
+        }
+    }
 }
index 3b5a1e24f085691ebec1017ad133b5ed104c0ab6..9039293b5b7868829569e984292317beab988b43 100644 (file)
@@ -1800,6 +1800,7 @@ public abstract class BaseTestBugzillaIssues {
         assertEquals(expectedResultOrNull, eval.evaluate(intF).formatAsString());
     }
 
+    // ensure a simple workbook can be reproducibly written
     @Test
     void testWriteDocumentTwice() throws Exception {
         try (Workbook wb = _testDataProvider.createWorkbook()) {