diff --git a/poi-integration/src/test/java/org/apache/poi/stress/OPCFileHandler.java b/poi-integration/src/test/java/org/apache/poi/stress/OPCFileHandler.java index e5493d01bd..5408e2b437 100644 --- a/poi-integration/src/test/java/org/apache/poi/stress/OPCFileHandler.java +++ b/poi-integration/src/test/java/org/apache/poi/stress/OPCFileHandler.java @@ -23,6 +23,10 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.PushbackInputStream; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import org.apache.poi.openxml4j.opc.ContentTypes; import org.apache.poi.openxml4j.opc.OPCPackage; @@ -31,17 +35,18 @@ import org.apache.poi.xwpf.usermodel.XWPFRelation; import org.junit.jupiter.api.Test; class OPCFileHandler extends AbstractFileHandler { + private static final Set EXPECTED_FAILURES = unmodifiableHashSet( + "document/truncated62886.docx" + ); + @Override public void handleFile(InputStream stream, String path) throws Exception { // ignore password protected files if (POIXMLDocumentHandler.isEncrypted(stream)) return; - OPCPackage p; - try { - p = OPCPackage.open(stream); - } catch (Exception e) { - throw new RuntimeException("Failed to open '" + path + "' as OPCPackage", e); - } + if (EXPECTED_FAILURES.contains(path)) return; + + OPCPackage p = OPCPackage.open(stream); for (PackagePart part : p.getParts()) { if (part.getPartName().toString().equals("/docProps/core.xml")) { @@ -75,4 +80,8 @@ class OPCFileHandler extends AbstractFileHandler { handleExtracting(file); } + + private static Set unmodifiableHashSet(String... a) { + return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(a))); + } } diff --git a/poi-integration/src/test/java/org/apache/poi/stress/XWPFFileHandler.java b/poi-integration/src/test/java/org/apache/poi/stress/XWPFFileHandler.java index dbbb3f5edd..1c94cd3536 100644 --- a/poi-integration/src/test/java/org/apache/poi/stress/XWPFFileHandler.java +++ b/poi-integration/src/test/java/org/apache/poi/stress/XWPFFileHandler.java @@ -26,25 +26,27 @@ import java.util.HashSet; import java.util.Set; import org.apache.poi.ooxml.POIXMLException; -import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.junit.jupiter.api.Test; class XWPFFileHandler extends AbstractFileHandler { + private static final Set EXPECTED_FAILURES = unmodifiableHashSet( + "document/truncated62886.docx" + ); @Override public void handleFile(InputStream stream, String path) throws Exception { // ignore password protected files if (POIXMLDocumentHandler.isEncrypted(stream)) return; + if (EXPECTED_FAILURES.contains(path)) return; + try (XWPFDocument doc = new XWPFDocument(stream)) { new POIXMLDocumentHandler().handlePOIXMLDocument(doc); POIXMLDocumentHandler.cursorRecursive(doc.getDocument()); } catch (POIXMLException e) { Exception cause = (Exception)e.getCause(); throw cause == null ? e : cause; - } catch (Exception e) { - throw new RuntimeException("Failed to open '" + path + "' as XWPFDocument", e); } }