diff options
13 files changed, 168 insertions, 85 deletions
diff --git a/src/java/org/apache/poi/hssf/dev/EFBiffViewer.java b/src/java/org/apache/poi/hssf/dev/EFBiffViewer.java index c87f5f73b9..be8fe537a2 100644 --- a/src/java/org/apache/poi/hssf/dev/EFBiffViewer.java +++ b/src/java/org/apache/poi/hssf/dev/EFBiffViewer.java @@ -44,21 +44,27 @@ public class EFBiffViewer public void run() throws IOException { NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(file), true); - InputStream din = BiffViewer.getPOIFSInputStream(fs); - HSSFRequest req = new HSSFRequest(); - - req.addListenerForAllRecords(new HSSFListener() - { - public void processRecord(Record rec) - { - System.out.println(rec.toString()); + try { + InputStream din = BiffViewer.getPOIFSInputStream(fs); + try { + HSSFRequest req = new HSSFRequest(); + + req.addListenerForAllRecords(new HSSFListener() + { + public void processRecord(Record rec) + { + System.out.println(rec.toString()); + } + }); + HSSFEventFactory factory = new HSSFEventFactory(); + + factory.processEvents(req, din); + } finally { + din.close(); } - }); - HSSFEventFactory factory = new HSSFEventFactory(); - - factory.processEvents(req, din); - din.close(); - fs.close(); + } finally { + fs.close(); + } } public void setFile(String file) diff --git a/src/java/org/apache/poi/hssf/dev/RecordLister.java b/src/java/org/apache/poi/hssf/dev/RecordLister.java index 7c626b8a12..2f61ea3765 100644 --- a/src/java/org/apache/poi/hssf/dev/RecordLister.java +++ b/src/java/org/apache/poi/hssf/dev/RecordLister.java @@ -51,37 +51,42 @@ public class RecordLister throws IOException { NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(file), true); - InputStream din = BiffViewer.getPOIFSInputStream(fs); - RecordInputStream rinp = new RecordInputStream(din); - - while(rinp.hasNextRecord()) { - int sid = rinp.getNextSid(); - rinp.nextRecord(); - - int size = rinp.available(); - Class<? extends Record> clz = RecordFactory.getRecordClass(sid); - - System.out.print( - formatSID(sid) + - " - " + - formatSize(size) + - " bytes" - ); - if(clz != null) { - System.out.print(" \t"); - System.out.print(clz.getName().replace("org.apache.poi.hssf.record.", "")); - } - System.out.println(); - - byte[] data = rinp.readRemainder(); - if(data.length > 0) { - System.out.print(" "); - System.out.println( formatData(data) ); - } - } + try { + InputStream din = BiffViewer.getPOIFSInputStream(fs); + try { + RecordInputStream rinp = new RecordInputStream(din); - din.close(); - fs.close(); + while(rinp.hasNextRecord()) { + int sid = rinp.getNextSid(); + rinp.nextRecord(); + + int size = rinp.available(); + Class<? extends Record> clz = RecordFactory.getRecordClass(sid); + + System.out.print( + formatSID(sid) + + " - " + + formatSize(size) + + " bytes" + ); + if(clz != null) { + System.out.print(" \t"); + System.out.print(clz.getName().replace("org.apache.poi.hssf.record.", "")); + } + System.out.println(); + + byte[] data = rinp.readRemainder(); + if(data.length > 0) { + System.out.print(" "); + System.out.println( formatData(data) ); + } + } + } finally { + din.close(); + } + } finally { + fs.close(); + } } private static String formatSID(int sid) { diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index d412d97d34..25842cc556 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -716,6 +716,7 @@ public final class TestPackage { Workbook wb = WorkbookFactory.create(new ByteArrayInputStream(buf)); wb.getSheetAt(0); wb.close(); + zipFile.close(); } @Test diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java index b403e90d78..5ee7b23972 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java @@ -26,9 +26,6 @@ import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; - import org.apache.poi.POIDataSamples; import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -41,6 +38,9 @@ import org.apache.poi.openxml4j.opc.TargetMode; import org.apache.poi.util.IOUtils; import org.apache.poi.util.TempFile; +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; + /** * Test core properties Open Packaging Convention compliance. * @@ -249,6 +249,7 @@ public final class TestOPCComplianceCoreProperties extends TestCase { ByteArrayOutputStream baos = new ByteArrayOutputStream(); pkg.save(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + pkg.revert(); pkg = OPCPackage.open(bais); @@ -257,7 +258,7 @@ public final class TestOPCComplianceCoreProperties extends TestCase { assertNotNull(pkg.getPackageProperties()); assertNotNull(pkg.getPackageProperties().getLanguageProperty()); assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); - + pkg.close(); // Open a new copy of it pkg = OPCPackage.open(POIDataSamples.getOpenXML4JInstance().getFile(sampleFileName).getPath()); @@ -265,6 +266,8 @@ public final class TestOPCComplianceCoreProperties extends TestCase { // Save and re-load, without having touched the properties yet baos = new ByteArrayOutputStream(); pkg.save(baos); + pkg.revert(); + bais = new ByteArrayInputStream(baos.toByteArray()); pkg = OPCPackage.open(bais); @@ -285,10 +288,12 @@ public final class TestOPCComplianceCoreProperties extends TestCase { // Copy this into a temp file, so we can play with it File tmp = TempFile.createTempFile("poi-test", ".opc"); FileOutputStream out = new FileOutputStream(tmp); + InputStream in = POIDataSamples.getOpenXML4JInstance().openResourceAsStream(sampleFileName); IOUtils.copy( - POIDataSamples.getOpenXML4JInstance().openResourceAsStream(sampleFileName), + in, out); out.close(); + in.close(); // Open it from that temp file OPCPackage pkg = OPCPackage.open(tmp); @@ -302,7 +307,6 @@ public final class TestOPCComplianceCoreProperties extends TestCase { // Save and close pkg.close(); - // Re-open and check pkg = OPCPackage.open(tmp); diff --git a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java index 965aa2c3a4..cafdee46cb 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java +++ b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java @@ -228,7 +228,7 @@ public final class TestWorkbookFactory extends TestCase { ); assertNotNull(wb); assertTrue(wb instanceof XSSFWorkbook); - + wb.close(); // Unprotected, wrong password, opens normally wb = WorkbookFactory.create( @@ -243,7 +243,7 @@ public final class TestWorkbookFactory extends TestCase { ); assertNotNull(wb); assertTrue(wb instanceof XSSFWorkbook); - + wb.close(); // Protected, correct password, opens fine wb = WorkbookFactory.create( @@ -258,7 +258,7 @@ public final class TestWorkbookFactory extends TestCase { ); assertNotNull(wb); assertTrue(wb instanceof XSSFWorkbook); - + wb.close(); // Protected, wrong password, throws Exception try { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java index 1c750fedbf..ff3ee87b38 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFFormulaEvaluation.java @@ -71,7 +71,8 @@ public final class TestSXSSFFormulaEvaluation { XSSFWorkbook xwb = new XSSFWorkbook(); xwb.createSheet("Open"); xwb.createSheet("Closed"); - + + wb.close(); wb = new SXSSFWorkbook(xwb, 5); s = wb.getSheet("Closed"); s.flushRows(); @@ -83,10 +84,12 @@ public final class TestSXSSFFormulaEvaluation { eval.evaluateAll(); fail("Evaluate All shouldn't work, as sheets flushed"); } catch (SXSSFFormulaEvaluator.SheetsFlushedException e) {} + + wb.close(); } @Test - public void testEvaluateRefOutsideWindowFails() { + public void testEvaluateRefOutsideWindowFails() throws IOException { SXSSFWorkbook wb = new SXSSFWorkbook(5); SXSSFSheet s = wb.createSheet(); @@ -108,14 +111,17 @@ public final class TestSXSSFFormulaEvaluation { } catch(SXSSFFormulaEvaluator.RowFlushedException e) { // Expected } + + wb.close(); } /** * If all formula cells + their references are inside the window, * then evaluation works + * @throws IOException */ @Test - public void testEvaluateAllInWindow() { + public void testEvaluateAllInWindow() throws IOException { SXSSFWorkbook wb = new SXSSFWorkbook(5); SXSSFSheet s = wb.createSheet(); s.createRow(0).createCell(0).setCellFormula("1+2"); @@ -128,10 +134,12 @@ public final class TestSXSSFFormulaEvaluation { assertEquals(3, (int)s.getRow(0).getCell(0).getNumericCellValue()); assertEquals(13, (int)s.getRow(1).getCell(1).getNumericCellValue()); assertEquals(113, (int)s.getRow(2).getCell(2).getNumericCellValue()); + + wb.close(); } @Test - public void testEvaluateRefInsideWindow() { + public void testEvaluateRefInsideWindow() throws IOException { SXSSFWorkbook wb = new SXSSFWorkbook(5); SXSSFSheet s = wb.createSheet(); @@ -146,10 +154,12 @@ public final class TestSXSSFFormulaEvaluation { assertEquals(0, (int)c.getNumericCellValue()); eval.evaluateFormulaCell(c); assertEquals(3, (int)c.getNumericCellValue()); + + wb.close(); } @Test - public void testEvaluateSimple() { + public void testEvaluateSimple() throws IOException { SXSSFWorkbook wb = new SXSSFWorkbook(5); SXSSFSheet s = wb.createSheet(); @@ -165,5 +175,7 @@ public final class TestSXSSFFormulaEvaluation { c.setCellFormula("CONCATENATE(\"hello\",\" \",\"world\")"); eval.evaluateFormulaCell(c); assertEquals("hello world", c.getStringCellValue()); + + wb.close(); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java b/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java index b665492357..5b78d1484c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TestExtractor.java @@ -129,6 +129,7 @@ public final class TestExtractor { */ @Test public void testMissingCoreRecords() throws Exception { + ppe.close(); ppe = new PowerPointExtractor(slTests.openResourceAsStream("missing_core_records.ppt")); String text = ppe.getText(true, false); @@ -171,6 +172,7 @@ public final class TestExtractor { // Check the first file ss = new HSLFSlideShowImpl(dirA); + ppe.close(); ppe = new PowerPointExtractor(ss); assertEquals("Sample PowerPoint file\nThis is the 1st file\nNot much too it\n", ppe.getText(true, false) @@ -178,6 +180,7 @@ public final class TestExtractor { // And the second ss = new HSLFSlideShowImpl(dirB); + ppe.close(); ppe = new PowerPointExtractor(ss); assertEquals("Sample PowerPoint file\nThis is the 2nd file\nNot much too it either\n", ppe.getText(true, false) @@ -192,6 +195,7 @@ public final class TestExtractor { @Test public void testExtractFromOwnEmbeded() throws Exception { String path = "ppt_with_embeded.ppt"; + ppe.close(); ppe = new PowerPointExtractor(POIDataSamples.getSlideShowInstance().openResourceAsStream(path)); List<OLEShape> shapes = ppe.getOLEShapes(); assertEquals("Expected 6 ole shapes in " + path, 6, shapes.size()); @@ -209,6 +213,7 @@ public final class TestExtractor { } else if ("Presentation".equals(name)) { num_ppt++; HSLFSlideShow ppt = new HSLFSlideShow(data); + ppt.close(); } data.close(); } @@ -223,6 +228,7 @@ public final class TestExtractor { @Test public void test52991() throws Exception { String path = "badzip.ppt"; + ppe.close(); ppe = new PowerPointExtractor(POIDataSamples.getSlideShowInstance().openResourceAsStream(path)); List<OLEShape> shapes = ppe.getOLEShapes(); @@ -236,6 +242,7 @@ public final class TestExtractor { */ @Test public void testWithComments() throws Exception { + ppe.close(); ppe = new PowerPointExtractor(slTests.openResourceAsStream("WithComments.ppt")); String text = ppe.getText(); @@ -248,6 +255,7 @@ public final class TestExtractor { // And another file + ppe.close(); ppe = new PowerPointExtractor(slTests.openResourceAsStream("45543.ppt")); text = ppe.getText(); @@ -271,6 +279,7 @@ public final class TestExtractor { HSLFSlideShow ss = new HSLFSlideShow(hslf); assertNotNull(ss.getNotesHeadersFooters()); assertEquals("testdoc test phrase", ss.getNotesHeadersFooters().getHeaderText()); + ppe.close(); ppe = new PowerPointExtractor(hslf); @@ -282,13 +291,14 @@ public final class TestExtractor { text = ppe.getText(); assertContains(text, "testdoc"); assertContains(text, "test phrase"); - + ss.close(); // And with a footer, also on notes hslf = new HSLFSlideShowImpl(slTests.openResourceAsStream("45537_Footer.ppt")); ss = new HSLFSlideShow(hslf); assertNotNull(ss.getNotesHeadersFooters()); assertEquals("testdoc test phrase", ss.getNotesHeadersFooters().getFooterText()); + ppe.close(); ppe = new PowerPointExtractor(slTests.openResourceAsStream("45537_Footer.ppt")); @@ -309,7 +319,8 @@ public final class TestExtractor { String masterRandomText = "This text comes from the Master Slide"; String masterFooterText = "Footer from the master slide"; HSLFSlideShowImpl hslf = new HSLFSlideShowImpl(slTests.openResourceAsStream("WithMaster.ppt")); - + ppe.close(); + ppe = new PowerPointExtractor(hslf); String text = ppe.getText(); @@ -320,6 +331,7 @@ public final class TestExtractor { @Test public void testMasterText() throws Exception { + ppe.close(); ppe = new PowerPointExtractor(slTests.openResourceAsStream("master_text.ppt")); // Initially not there @@ -338,7 +350,8 @@ public final class TestExtractor { // Will always show up String masterText = "Footer from the master slide"; HSLFSlideShowImpl hslf = new HSLFSlideShowImpl(slTests.openResourceAsStream("WithMaster.ppt")); - + ppe.close(); + ppe = new PowerPointExtractor(hslf); text = ppe.getText(); @@ -352,6 +365,7 @@ public final class TestExtractor { @Test public void testChineseText() throws Exception { HSLFSlideShowImpl hslf = new HSLFSlideShowImpl(slTests.openResourceAsStream("54880_chinese.ppt")); + ppe.close(); ppe = new PowerPointExtractor(hslf); String text = ppe.getText(); @@ -409,6 +423,7 @@ public final class TestExtractor { // "Row 4, Cell 1\tRow 4, Cell 2\tRow 4, Cell 3\tRow 4, Cell 4\n"+ // "Row 5, Cell 1\tRow 5, Cell 2\tRow 5, Cell 3\tRow 5, Cell 4\n"; // assertTrue(text.contains(target)); + ppe.close(); ppe = new PowerPointExtractor(slTests.openResourceAsStream("54722.ppt")); String text = ppe.getText(); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java index b406d6eed8..7ce0f6cbd1 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java @@ -69,12 +69,14 @@ public final class TestCurrentUserAtom { public void readEnc() throws Exception { POIFSFileSystem fs = new POIFSFileSystem(_slTests.getFile(encFile)); - new CurrentUserAtom(fs.getRoot()); - assertTrue(true); // not yet failed - - new HSLFSlideShowImpl(fs); - - fs.close(); + try { + new CurrentUserAtom(fs.getRoot()); + assertTrue(true); // not yet failed + + new HSLFSlideShowImpl(fs).close(); + } finally { + fs.close(); + } } @Test diff --git a/src/testcases/org/apache/poi/ddf/TestEscherDump.java b/src/testcases/org/apache/poi/ddf/TestEscherDump.java index efc6427144..992eb5e1bd 100644 --- a/src/testcases/org/apache/poi/ddf/TestEscherDump.java +++ b/src/testcases/org/apache/poi/ddf/TestEscherDump.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; @@ -31,7 +32,6 @@ import org.apache.poi.util.IOUtils; import org.apache.poi.util.LocaleUtil; import org.junit.Test; -@SuppressWarnings("resource") public class TestEscherDump { @Test public void testSimple() throws Exception { @@ -56,10 +56,15 @@ public class TestEscherDump { //new EscherDump().dumpOld(data.length, new ByteArrayInputStream(data), System.out); data = new byte[2586114]; - int bytes = IOUtils.readFully(HSSFTestDataSamples.openSampleFileStream("44593.xls"), data); - assertTrue(bytes != -1); - //new EscherDump().dump(bytes, data, System.out); - //new EscherDump().dumpOld(bytes, new ByteArrayInputStream(data), System.out); + InputStream stream = HSSFTestDataSamples.openSampleFileStream("44593.xls"); + try { + int bytes = IOUtils.readFully(stream, data); + assertTrue(bytes != -1); + //new EscherDump().dump(bytes, data, System.out); + //new EscherDump().dumpOld(bytes, new ByteArrayInputStream(data), System.out); + } finally { + stream.close(); + } } /** diff --git a/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java b/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java index 0463162daf..15a8954888 100644 --- a/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java +++ b/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java @@ -48,15 +48,18 @@ public class TestBiffViewer extends BaseXLSIteratingTest { @Override void runOneFile(File fileIn) throws IOException { NPOIFSFileSystem fs = new NPOIFSFileSystem(fileIn, true); - InputStream is = BiffViewer.getPOIFSInputStream(fs); - try { - // use a NullOutputStream to not write the bytes anywhere for best runtime - PrintWriter dummy = new PrintWriter(new OutputStreamWriter(NULL_OUTPUT_STREAM, LocaleUtil.CHARSET_1252)); - BiffViewer.runBiffViewer(dummy, is, true, true, true, false); - } finally { - is.close(); - fs.close(); - } + try { + InputStream is = BiffViewer.getPOIFSInputStream(fs); + try { + // use a NullOutputStream to not write the bytes anywhere for best runtime + PrintWriter dummy = new PrintWriter(new OutputStreamWriter(NULL_OUTPUT_STREAM, LocaleUtil.CHARSET_1252)); + BiffViewer.runBiffViewer(dummy, is, true, true, true, false); + } finally { + is.close(); + } + } finally { + fs.close(); + } } // @Test diff --git a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java index 2a5698881d..7f980e29cf 100644 --- a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java +++ b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java @@ -45,13 +45,14 @@ public final class TestExcelExtractor { Biff8EncryptionKey.setCurrentUserPassword(null); } - @SuppressWarnings("resource") private static ExcelExtractor createExtractor(String sampleFileName) throws IOException { File file = HSSFTestDataSamples.getSampleFile(sampleFileName); - return new ExcelExtractor(new POIFSFileSystem(file)); + POIFSFileSystem fs = new POIFSFileSystem(file); + ExcelExtractor extractor = new ExcelExtractor(fs); + extractor.setFilesystem(fs); + return extractor; } - @Test public void testSimple() throws IOException { ExcelExtractor extractor = createExtractor("Simple.xls"); diff --git a/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShowFactory.java b/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShowFactory.java index ab8c168253..631cf37724 100644 --- a/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShowFactory.java +++ b/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShowFactory.java @@ -36,27 +36,38 @@ public class BaseTestSlideShowFactory { // from file ss = SlideShowFactory.create(fromFile(file)); assertNotNull(ss); + ss.close(); + // from stream ss = SlideShowFactory.create(fromStream(file)); assertNotNull(ss); + ss.close(); + // from NPOIFS if (!file.contains("pptx")) { NPOIFSFileSystem npoifs = new NPOIFSFileSystem(fromFile(file)); ss = SlideShowFactory.create(npoifs); assertNotNull(ss); npoifs.close(); + ss.close(); } + // from protected file ss = SlideShowFactory.create(fromFile(protectedFile), password); assertNotNull(ss); + ss.close(); + // from protected stream ss = SlideShowFactory.create(fromStream(protectedFile), password); assertNotNull(ss); + ss.close(); + // from protected NPOIFS NPOIFSFileSystem npoifs = new NPOIFSFileSystem(fromFile(protectedFile)); ss = SlideShowFactory.create(npoifs, password); assertNotNull(ss); npoifs.close(); + ss.close(); } private static File fromFile(String file) { diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java index 1d20d6c225..384edddb5c 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java @@ -25,12 +25,15 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; +import java.util.ArrayList; import java.util.Calendar; +import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.util.LocaleUtil; +import org.junit.After; import org.junit.Test; import junit.framework.AssertionFailedError; @@ -44,6 +47,16 @@ public abstract class BaseTestCell { protected final ITestDataProvider _testDataProvider; + private List<Workbook> workbooksToClose = new ArrayList<Workbook>(); + + @After + public void tearDown() throws IOException { + // free resources correctly + for(Workbook wb : workbooksToClose) { + wb.close(); + } + } + /** * @param testDataProvider an object that provides test data in HSSF / XSSF specific way */ @@ -350,8 +363,11 @@ public abstract class BaseTestCell { wb.close(); } + private Cell createACell() { - return _testDataProvider.createWorkbook().createSheet("Sheet1").createRow(0).createCell(0); + Workbook wb = _testDataProvider.createWorkbook(); + workbooksToClose.add(wb); + return wb.createSheet("Sheet1").createRow(0).createCell(0); } /** @@ -953,5 +969,7 @@ public abstract class BaseTestCell { B1.setAsActiveCell(); assertEquals(B1.getAddress(), sheet.getActiveCell()); + + wb.close(); } } |