You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2019/01/27 09:57:49 UTC
svn commit: r1852278 - in /poi/trunk/src: integrationtest/org/apache/poi/
java/org/apache/poi/hssf/extractor/ java/org/apache/poi/hssf/usermodel/
java/org/apache/poi/poifs/filesystem/
testcases/org/apache/poi/hssf/usermodel/
Author: centic
Date: Sun Jan 27 09:57:49 2019
New Revision: 1852278
URL: http://svn.apache.org/viewvc?rev=1852278&view=rev
Log:
Adjust handling of some exceptions in regression tests
Modified:
poi/trunk/src/integrationtest/org/apache/poi/BaseIntegrationTest.java
poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
poi/trunk/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
Modified: poi/trunk/src/integrationtest/org/apache/poi/BaseIntegrationTest.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/BaseIntegrationTest.java?rev=1852278&r1=1852277&r2=1852278&view=diff
==============================================================================
--- poi/trunk/src/integrationtest/org/apache/poi/BaseIntegrationTest.java (original)
+++ poi/trunk/src/integrationtest/org/apache/poi/BaseIntegrationTest.java Sun Jan 27 09:57:49 2019
@@ -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");
Modified: poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java?rev=1852278&r1=1852277&r2=1852278&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java Sun Jan 27 09:57:49 2019
@@ -138,7 +138,7 @@ public class OldExcelExtractor implement
DocumentNode book;
try {
book = (DocumentNode)directory.getEntry(OLD_WORKBOOK_DIR_ENTRY_NAME);
- } catch (FileNotFoundException e) {
+ } catch (FileNotFoundException | IllegalArgumentException e) {
// some files have "Workbook" instead
book = (DocumentNode)directory.getEntry(WORKBOOK_DIR_ENTRY_NAMES[0]);
}
Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=1852278&r1=1852277&r2=1852278&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java Sun Jan 27 09:57:49 2019
@@ -266,21 +266,20 @@ public final class HSSFWorkbook extends
}
// check for an encrypted .xlsx file - they get OLE2 wrapped
- try {
- directory.getEntry(Decryptor.DEFAULT_POIFS_ENTRY);
+ if(directory.hasEntry(Decryptor.DEFAULT_POIFS_ENTRY)) {
throw new EncryptedDocumentException("The supplied spreadsheet seems to be an Encrypted .xlsx file. " +
"It must be decrypted before use by XSSF, it cannot be used by HSSF");
- } catch (FileNotFoundException e) {
- // fall through
}
// check for previous version of file format
- try {
- directory.getEntry(OLD_WORKBOOK_DIR_ENTRY_NAME);
+ if(directory.hasEntry(OLD_WORKBOOK_DIR_ENTRY_NAME)) {
throw new OldExcelFormatException("The supplied spreadsheet seems to be Excel 5.0/7.0 (BIFF5) format. "
+ "POI only supports BIFF8 format (from Excel versions 97/2000/XP/2003)");
- } catch (FileNotFoundException e) {
- // fall through
+ }
+
+ // throw more useful exceptions for known wrong file-extensions
+ if(directory.hasEntry("WordDocument")) {
+ throw new IllegalArgumentException("The document is really a DOC file");
}
throw new IllegalArgumentException("The supplied POIFSFileSystem does not contain a BIFF8 'Workbook' entry. "
Modified: poi/trunk/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java?rev=1852278&r1=1852277&r2=1852278&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java Sun Jan 27 09:57:49 2019
@@ -328,6 +328,15 @@ public class DirectoryNode
rval = _byname.get(name);
}
if (rval == null) {
+ // throw more useful exceptions for known wrong file-extensions
+ if(_byname.containsKey("Workbook")) {
+ throw new IllegalArgumentException("The document is really a XLS file");
+ } else if(_byname.containsKey("PowerPoint Document")) {
+ throw new IllegalArgumentException("The document is really a PPT file");
+ } else if(_byname.containsKey("VisioDocument")) {
+ throw new IllegalArgumentException("The document is really a VSD file");
+ }
+
// either a null name was given, or there is no such name
throw new FileNotFoundException("no such entry: \"" + name
+ "\", had: " + _byname.keySet());
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1852278&r1=1852277&r2=1852278&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Sun Jan 27 09:57:49 2019
@@ -33,7 +33,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -923,7 +922,7 @@ public final class TestBugs extends Base
* Problems with extracting check boxes from
* HSSFObjectData
*/
- @Test(expected = FileNotFoundException.class)
+ @Test(expected = IllegalArgumentException.class)
public void bug44840() throws Exception {
HSSFWorkbook wb = openSample("WithCheckBoxes.xls");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org