aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/testcases/org/apache/poi
diff options
context:
space:
mode:
authorDominik Stadler <centic@apache.org>2015-10-26 07:54:06 +0000
committerDominik Stadler <centic@apache.org>2015-10-26 07:54:06 +0000
commitbcaab496b69443b0904e45c1ae168db41c2ea8eb (patch)
tree1059dcb909423f88145baf8be9d6df9259ed83fd /src/ooxml/testcases/org/apache/poi
parent9a080e3666031aca8a3c2dc47227b2d250c931a0 (diff)
downloadpoi-bcaab496b69443b0904e45c1ae168db41c2ea8eb.tar.gz
poi-bcaab496b69443b0904e45c1ae168db41c2ea8eb.zip
Bug 56957: Avoid error if Workbook with empty SharedStringTable is written
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1710521 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases/org/apache/poi')
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
index f5fdd4363d..199a3fe307 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
@@ -40,10 +40,12 @@ import org.apache.poi.POIXMLProperties;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.openxml4j.opc.ContentTypes;
import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackagePartName;
import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.openxml4j.opc.internal.FileHelper;
import org.apache.poi.openxml4j.opc.internal.MemoryPackagePart;
import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
import org.apache.poi.ss.SpreadsheetVersion;
@@ -1019,5 +1021,42 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
finally {
IOUtils.closeQuietly(wb);
}
+ }
+
+ @Test
+ public void testBug56957CloseWorkbook() throws Exception {
+ File file = TempFile.createTempFile("TestBug56957_", ".xlsx");
+
+ try {
+ // as the file is written to, we make a copy before actually working on it
+ FileHelper.copyFile(new File("test-data/spreadsheet/56957.xlsx"), file);
+
+ assertTrue(file.exists());
+
+ // read-only mode works!
+ Workbook workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ));
+ System.out.println(workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue().toString());
+ workbook.close();
+ workbook = null;
+
+ workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ));
+ System.out.println(workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue().toString());
+ workbook.close();
+ workbook = null;
+
+ // now check read/write mode
+ workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ_WRITE));
+ System.out.println(workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue().toString());
+ workbook.close();
+ workbook = null;
+
+ workbook = WorkbookFactory.create(OPCPackage.open(file, PackageAccess.READ_WRITE));
+ System.out.println(workbook.getSheetAt(0).getRow(0).getCell(0, Row.CREATE_NULL_AS_BLANK).getDateCellValue().toString());
+ workbook.close();
+ workbook = null;
+ } finally {
+ assertTrue(file.exists());
+ assertTrue(file.delete());
+ }
}
}