diff options
author | Dominik Stadler <centic@apache.org> | 2019-01-27 09:57:49 +0000 |
---|---|---|
committer | Dominik Stadler <centic@apache.org> | 2019-01-27 09:57:49 +0000 |
commit | e8ed5e3a8c168ec1264add208cddf23f57998de5 (patch) | |
tree | 239ddd6acff95273713594e36c4abfbac853a1cd /src/integrationtest/org/apache/poi | |
parent | c376d662f92577aa6226e454bb3eb5f113ec817d (diff) | |
download | poi-e8ed5e3a8c168ec1264add208cddf23f57998de5.tar.gz poi-e8ed5e3a8c168ec1264add208cddf23f57998de5.zip |
Adjust handling of some exceptions in regression tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1852278 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/integrationtest/org/apache/poi')
-rw-r--r-- | src/integrationtest/org/apache/poi/BaseIntegrationTest.java | 62 |
1 files changed, 43 insertions, 19 deletions
diff --git a/src/integrationtest/org/apache/poi/BaseIntegrationTest.java b/src/integrationtest/org/apache/poi/BaseIntegrationTest.java index 304794b231..4b833d99bd 100644 --- a/src/integrationtest/org/apache/poi/BaseIntegrationTest.java +++ b/src/integrationtest/org/apache/poi/BaseIntegrationTest.java @@ -51,30 +51,33 @@ public class BaseIntegrationTest { File inputFile = new File(rootDir, file); try { - handleFile(inputFile); + try { + handleFile(inputFile); + } catch (IllegalArgumentException e) { + handleWrongFileExtension(inputFile, e); + return; + } } catch (OfficeXmlFileException e) { // check if the file-extension is wrong if(!e.getMessage().contains("data appears to be in the Office 2007")) { - throw e; + // use XWPF instead of HWPF and XSSF instead of HSSF as the file seems to have the wrong extension + handleWrongOLE2XMLExtension(inputFile, e); + return; } - // use XWPF instead of HWPF and XSSF instead of HSSF as the file seems to have the wrong extension - handleWrongExtension(inputFile, e); + throw e; } catch (OldFileFormatException e) { if (e.getClass().equals(OldFileFormatException.class)) { // Not even text extraction is supported for these: handler.handleExtracting(inputFile); - //noinspection ConstantConditions Assume.assumeFalse("File " + file + " excluded because it is unsupported old Excel format", true); } // otherwise try at least to perform extracting tests on these old files } catch (EncryptedDocumentException e) { // Do not try to read encrypted files - //noinspection ConstantConditions Assume.assumeFalse("File " + file + " excluded because it is password-encrypted", true); } catch (ZipException e) { // some files are corrupted - if (e.getMessage().equals("unexpected EOF")) { - //noinspection ConstantConditions + if (e.getMessage().equals("unexpected EOF") || e.getMessage().equals("Truncated ZIP file")) { Assume.assumeFalse("File " + file + " excluded because the Zip file is incomplete", true); } @@ -82,37 +85,58 @@ public class BaseIntegrationTest { } catch (IOException e) { // sometimes binary format has XML-format-extension... if(e.getMessage().contains("rong file format or file extension for OO XML file")) { - handleWrongExtension(inputFile, e); - } else { - throw e; + handleWrongOLE2XMLExtension(inputFile, e); + return; } + + throw e; } catch (IllegalArgumentException e) { // ignore errors for documents with incorrect extension String message = e.getMessage(); if(message != null && (message.equals("The document is really a RTF file") || message.equals("The document is really a PDF file") || message.equals("The document is really a HTML file"))) { - //noinspection ConstantConditions - Assume.assumeFalse("File " + file + " excluded because it is actually a PDF/RTF file", true); + Assume.assumeFalse("File " + file + " excluded because it is actually a PDF/RTF/HTML file", true); } - if(e.getMessage().equals("The document is really a OOXML file")) { - handleWrongExtension(inputFile, e); - } else { - throw e; + if(message != null && message.equals("The document is really a OOXML file")) { + handleWrongOLE2XMLExtension(inputFile, e); + return; } + + throw e; } try { handler.handleExtracting(inputFile); } catch (EncryptedDocumentException e) { // Do not try to read encrypted files - //noinspection ConstantConditions Assume.assumeFalse("File " + file + " excluded because it is password-encrypted", true); } } - void handleWrongExtension(File inputFile, Exception e) throws Exception { + private void handleWrongFileExtension(File inputFile, IllegalArgumentException e) throws Exception { + // we sometimes have wrong extensions, so for some exceptions we try to handle it + // with the correct FileHandler instead + String message = e.getMessage(); + if(message != null && (message.equals("The document is really a XLS file"))) { + handler = TestAllFiles.HANDLERS.get(".xls"); + handleFile(inputFile); + } else if(message != null && (message.equals("The document is really a PPT file"))) { + handler = TestAllFiles.HANDLERS.get(".ppt"); + handleFile(inputFile); + } else if(message != null && (message.equals("The document is really a DOC file"))) { + handler = TestAllFiles.HANDLERS.get(".doc"); + handleFile(inputFile); + } else if(message != null && (message.equals("The document is really a VSD file"))) { + handler = TestAllFiles.HANDLERS.get(".vsd"); + handleFile(inputFile); + } + + throw e; + } + + void handleWrongOLE2XMLExtension(File inputFile, Exception e) throws Exception { // use XWPF instead of HWPF and XSSF instead of HSSF as the file seems to have the wrong extension if (handler instanceof HWPFFileHandler) { handler = TestAllFiles.HANDLERS.get(".docx"); |