From 5756b4ca254ff0196f8f1639e5cedaa88e4d22e6 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Wed, 11 Nov 2015 16:57:39 +0000 Subject: [PATCH] #58597: Fix tests to not do setAccessible(), add some doPrivileged, too. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1713891 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/storage/RawDataBlock.java | 2 +- .../org/apache/poi/util/POILogFactory.java | 2 +- .../apache/poi/openxml4j/opc/TestPackage.java | 9 +- .../poi/poifs/crypt/TestSignatureInfo.java | 6 +- .../poi/xslf/usermodel/TestPPTX2PNG.java | 29 --- .../poi/xssf/streaming/TestSXSSFWorkbook.java | 8 +- .../hwpf/model/TestDocumentProperties.java | 24 ++- src/testcases/org/apache/poi/POITestCase.java | 48 +++++ .../aggregates/TestSharedValueManager.java | 18 +- .../poi/hssf/usermodel/TestHSSFName.java | 17 +- .../poi/hssf/usermodel/TestShapeGroup.java | 14 +- .../poi/poifs/storage/TestRawDataBlock.java | 174 +++++++++--------- .../poifs/storage/TestRawDataBlockList.java | 40 ++-- .../poi/ss/formula/functions/TestMathX.java | 11 -- .../org/apache/poi/util/TestHexDump.java | 13 -- .../org/apache/poi/util/TestPOILogger.java | 10 +- 16 files changed, 200 insertions(+), 225 deletions(-) diff --git a/src/java/org/apache/poi/poifs/storage/RawDataBlock.java b/src/java/org/apache/poi/poifs/storage/RawDataBlock.java index 018ee8ff2e..923e76fac8 100644 --- a/src/java/org/apache/poi/poifs/storage/RawDataBlock.java +++ b/src/java/org/apache/poi/poifs/storage/RawDataBlock.java @@ -38,7 +38,7 @@ public class RawDataBlock private byte[] _data; private boolean _eof; private boolean _hasData; - private static POILogger log = POILogFactory.getLogger(RawDataBlock.class); + static POILogger log = POILogFactory.getLogger(RawDataBlock.class); /** * Constructor RawDataBlock diff --git a/src/java/org/apache/poi/util/POILogFactory.java b/src/java/org/apache/poi/util/POILogFactory.java index 7af73e3a87..1227a0d5ca 100644 --- a/src/java/org/apache/poi/util/POILogFactory.java +++ b/src/java/org/apache/poi/util/POILogFactory.java @@ -46,7 +46,7 @@ public final class POILogFactory { * The name of the class to use. Initialised the * first time we need it */ - private static String _loggerClassName = null; + static String _loggerClassName = null; /** * Construct a POILogFactory. 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 5c3f688cb4..d412d97d34 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -32,7 +32,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.net.URI; import java.net.URISyntaxException; @@ -46,6 +45,7 @@ import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; import org.apache.poi.EncryptedDocumentException; +import org.apache.poi.POITestCase; import org.apache.poi.POIXMLException; import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -579,11 +579,8 @@ public final class TestPackage { assertTrue(tempFile2.delete()); } - private static ContentTypeManager getContentTypeManager(OPCPackage pkg) - throws IOException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { - Field f = OPCPackage.class.getDeclaredField("contentTypeManager"); - f.setAccessible(true); - return (ContentTypeManager)f.get(pkg); + private static ContentTypeManager getContentTypeManager(OPCPackage pkg) { + return POITestCase.getFieldValue(OPCPackage.class, pkg, ContentTypeManager.class, "contentTypeManager"); } @Test diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java index e3a6e47d76..6f43fdd1f1 100644 --- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java +++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java @@ -34,7 +34,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.lang.reflect.Method; import java.net.ConnectException; import java.net.HttpURLConnection; import java.net.MalformedURLException; @@ -54,6 +53,7 @@ import java.util.Iterator; import java.util.List; import org.apache.poi.POIDataSamples; +import org.apache.poi.POITestCase; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.poifs.crypt.dsig.DigestInfo; @@ -247,9 +247,7 @@ public class TestSignatureInfo { XSSFWorkbook wb = new XSSFWorkbook(pkg); wb.setSheetName(0, "manipulated"); // ... I don't know, why commit is protected ... - Method m = XSSFWorkbook.class.getDeclaredMethod("commit"); - m.setAccessible(true); - m.invoke(wb); + POITestCase.callMethod(XSSFWorkbook.class, wb, Void.class, "commit", new Class[0], new Object[0]); // todo: test a manipulation on a package part, which is not signed // ... maybe in combination with #56164 diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java index 2c72f0a447..1ccf24df1f 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java @@ -20,12 +20,9 @@ package org.apache.poi.xslf.usermodel; import java.io.File; -import java.lang.reflect.Field; import org.apache.poi.POIDataSamples; import org.apache.poi.xslf.util.PPTX2PNG; -import org.junit.AfterClass; -import org.junit.BeforeClass; import org.junit.Test; /** @@ -34,32 +31,6 @@ import org.junit.Test; * @author Yegor Kozlov */ public class TestPPTX2PNG { - private static boolean jaxpDebugEnable = false; - - @BeforeClass - public static void activateJaxpDebug() { - jaxpDebugEnable = setDebugFld(true); - } - - @AfterClass - public static void resetJaxpDebug() { - setDebugFld(jaxpDebugEnable); - } - - private static boolean setDebugFld(boolean enable) { - // enable jaxp debugging because of jaxb/stax error in gump build - try { - Class clz = Class.forName("javax.xml.stream.FactoryFinder"); - Field fld = clz.getDeclaredField("debug"); - fld.setAccessible(true); - boolean isDebug = (Boolean)fld.get(null); - fld.set(null, enable); - return isDebug; - } catch (Exception e) { - // ignore - return false; - } - } @Test public void render() throws Exception { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java index 230db006ea..cd87fe6238 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java @@ -28,8 +28,8 @@ import static org.junit.Assert.fail; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.lang.reflect.Field; +import org.apache.poi.POITestCase; import org.apache.poi.ss.usermodel.BaseTestWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; @@ -106,9 +106,7 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook { @SuppressWarnings("resource") SXSSFWorkbook wb = new SXSSFWorkbook(null, 10, false, true); - Field f = SXSSFWorkbook.class.getDeclaredField("_sharedStringSource"); - f.setAccessible(true); - SharedStringsTable sss = (SharedStringsTable)f.get(wb); + SharedStringsTable sss = POITestCase.getFieldValue(SXSSFWorkbook.class, wb, SharedStringsTable.class, "_sharedStringSource"); assertNotNull(sss); @@ -119,7 +117,7 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook { row.createCell(2).setCellValue("A"); XSSFWorkbook xssfWorkbook = (XSSFWorkbook) SXSSFITestDataProvider.instance.writeOutAndReadBack(wb); - sss = (SharedStringsTable)f.get(wb); + sss = POITestCase.getFieldValue(SXSSFWorkbook.class, wb, SharedStringsTable.class, "_sharedStringSource"); assertEquals(2, sss.getUniqueCount()); assertTrue(wb.dispose()); diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java index 317ea8bf00..b600f07763 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java @@ -19,12 +19,18 @@ package org.apache.poi.hwpf.model; import java.lang.reflect.AccessibleObject; import java.lang.reflect.Field; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import java.util.Arrays; import junit.framework.TestCase; import org.apache.poi.hwpf.HWPFDocFixture; import org.apache.poi.hwpf.model.types.DOPAbstractType; +import org.apache.poi.util.SuppressForbidden; + +// TODO: Add DocumentProperties#equals ??? public final class TestDocumentProperties extends TestCase @@ -43,9 +49,21 @@ public final class TestDocumentProperties DocumentProperties newDocProperties = new DocumentProperties(buf, 0, size); - Field[] fields = DocumentProperties.class.getSuperclass().getDeclaredFields(); - AccessibleObject.setAccessible(fields, true); - + final Field[] fields; + try { + fields = AccessController.doPrivileged(new PrivilegedExceptionAction() { + @Override + @SuppressForbidden("Test only") + public Field[] run() throws Exception { + final Field[] fields = DocumentProperties.class.getSuperclass().getDeclaredFields(); + AccessibleObject.setAccessible(fields, true); + return fields; + } + }); + } catch (PrivilegedActionException pae) { + throw pae.getException(); + } + for (int x = 0; x < fields.length; x++) { // JaCoCo Code Coverage adds it's own field, don't look at this one here diff --git a/src/testcases/org/apache/poi/POITestCase.java b/src/testcases/org/apache/poi/POITestCase.java index 6de936fddf..f25a7853ec 100644 --- a/src/testcases/org/apache/poi/POITestCase.java +++ b/src/testcases/org/apache/poi/POITestCase.java @@ -21,8 +21,15 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import java.util.Collection; +import org.apache.poi.util.SuppressForbidden; + /** * Parent class for POI JUnit TestCases, which provide additional * features @@ -67,4 +74,45 @@ public class POITestCase { } fail("Unable to find " + needle + " in " + haystack); } + + /** Utility method to get the value of a private/protected field. + * Only use this method in test cases!!! + */ + public static R getFieldValue(final Class clazz, final T instance, final Class fieldType, final String fieldName) { + try { + return AccessController.doPrivileged(new PrivilegedExceptionAction() { + @Override + @SuppressWarnings("unchecked") + @SuppressForbidden("For test usage only") + public R run() throws Exception { + Field f = clazz.getDeclaredField(fieldName); + f.setAccessible(true); + return (R) f.get(instance); + } + }); + } catch (PrivilegedActionException pae) { + throw new AssertionError("Cannot access field '" + fieldName + "' of class " + clazz); + } + } + + /** Utility method to call a private/protected method. + * Only use this method in test cases!!! + */ + public static R callMethod(final Class clazz, final T instance, final Class returnType, final String methodName, + final Class[] parameterTypes, final Object[] parameters) { + try { + return AccessController.doPrivileged(new PrivilegedExceptionAction() { + @Override + @SuppressWarnings("unchecked") + @SuppressForbidden("For test usage only") + public R run() throws Exception { + Method m = clazz.getDeclaredMethod(methodName, parameterTypes); + m.setAccessible(true); + return (R) m.invoke(instance, parameters); + } + }); + } catch (PrivilegedActionException pae) { + throw new AssertionError("Cannot access method '" + methodName + "' of class " + clazz); + } + } } diff --git a/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java b/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java index aea5b321e3..9c4f8ab7bf 100644 --- a/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java +++ b/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java @@ -17,13 +17,13 @@ package org.apache.poi.hssf.record.aggregates; -import java.lang.reflect.Field; import java.util.Collection; import java.util.HashMap; import junit.framework.AssertionFailedError; import junit.framework.TestCase; +import org.apache.poi.POITestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.SharedFormulaRecord; @@ -176,21 +176,7 @@ public final class TestSharedValueManager extends TestCase { * {@link RowRecordsAggregate}. */ public static SharedValueManager extractFromRRA(RowRecordsAggregate rra) { - Field f; - try { - f = RowRecordsAggregate.class.getDeclaredField("_sharedValueManager"); - } catch (NoSuchFieldException e) { - throw new RuntimeException(e); - } - - f.setAccessible(true); - try { - return (SharedValueManager) f.get(rra); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } + return POITestCase.getFieldValue(RowRecordsAggregate.class, rra, SharedValueManager.class, "_sharedValueManager"); } public void testBug52527() { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java index cd8e1e9b92..2a92a95165 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java @@ -23,6 +23,7 @@ import static org.junit.Assert.fail; import java.lang.reflect.Field; +import org.apache.poi.POITestCase; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.HSSFFormulaParser; @@ -45,21 +46,7 @@ public final class TestHSSFName extends BaseTestNamedRange { * @return a reference to the wrapped {@link NameRecord} */ public static NameRecord getNameRecord(HSSFName definedName) { - - Field f; - try { - f = HSSFName.class.getDeclaredField("_definedNameRec"); - } catch (NoSuchFieldException e) { - throw new RuntimeException(e); - } - f.setAccessible(true); - try { - return (NameRecord) f.get(definedName); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } + return POITestCase.getFieldValue(HSSFName.class, definedName, NameRecord.class, "_definedNameRec"); } public TestHSSFName() { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java b/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java index 176b39f4c9..570a3a3261 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java @@ -18,6 +18,8 @@ package org.apache.poi.hssf.usermodel; import junit.framework.TestCase; + +import org.apache.poi.POITestCase; import org.apache.poi.ddf.EscherContainerRecord; import org.apache.poi.ddf.EscherSpgrRecord; import org.apache.poi.hssf.HSSFTestDataSamples; @@ -228,17 +230,7 @@ public class TestShapeGroup extends TestCase{ } private static EscherSpgrRecord getSpgrRecord(HSSFShapeGroup group) { - Field spgrField = null; - try { - spgrField = group.getClass().getDeclaredField("_spgrRecord"); - spgrField.setAccessible(true); - return (EscherSpgrRecord) spgrField.get(group); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - return null; + return POITestCase.getFieldValue(HSSFShapeGroup.class, group, EscherSpgrRecord.class, "_spgrRecord"); } public void testClearShapes(){ diff --git a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java index f7be2acf71..349d62f091 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java @@ -20,12 +20,12 @@ package org.apache.poi.poifs.storage; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Field; import java.util.Random; import junit.framework.TestCase; import org.apache.poi.util.DummyPOILogger; +import org.apache.poi.util.POILogger; /** * Class to test RawDataBlock functionality @@ -82,50 +82,53 @@ public final class TestRawDataBlock extends TestCase { */ public void testShortConstructor() throws Exception { // Get the logger to be used + POILogger oldLogger = RawDataBlock.log; DummyPOILogger logger = new DummyPOILogger(); - Field fld = RawDataBlock.class.getDeclaredField("log"); - fld.setAccessible(true); - fld.set(null, logger); - assertEquals(0, logger.logged.size()); - - // Test for various data sizes - for (int k = 1; k <= 512; k++) - { - byte[] data = new byte[ k ]; - - for (int j = 0; j < k; j++) - { - data[ j ] = ( byte ) j; - } - RawDataBlock block = null; - - logger.reset(); - assertEquals(0, logger.logged.size()); - - // Have it created - block = new RawDataBlock(new ByteArrayInputStream(data)); - assertNotNull(block); - - // Check for the warning is there for <512 - if(k < 512) { - assertEquals( - "Warning on " + k + " byte short block", - 1, logger.logged.size() - ); - - // Build the expected warning message, and check - String bts = k + " byte"; - if(k > 1) { - bts += "s"; - } - - assertEquals( - "7 - Unable to read entire block; "+bts+" read before EOF; expected 512 bytes. Your document was either written by software that ignores the spec, or has been truncated!", - logger.logged.get(0) - ); - } else { - assertEquals(0, logger.logged.size()); - } + try { + RawDataBlock.log = logger; + assertEquals(0, logger.logged.size()); + + // Test for various data sizes + for (int k = 1; k <= 512; k++) + { + byte[] data = new byte[ k ]; + + for (int j = 0; j < k; j++) + { + data[ j ] = ( byte ) j; + } + RawDataBlock block = null; + + logger.reset(); + assertEquals(0, logger.logged.size()); + + // Have it created + block = new RawDataBlock(new ByteArrayInputStream(data)); + assertNotNull(block); + + // Check for the warning is there for <512 + if(k < 512) { + assertEquals( + "Warning on " + k + " byte short block", + 1, logger.logged.size() + ); + + // Build the expected warning message, and check + String bts = k + " byte"; + if(k > 1) { + bts += "s"; + } + + assertEquals( + "7 - Unable to read entire block; "+bts+" read before EOF; expected 512 bytes. Your document was either written by software that ignores the spec, or has been truncated!", + logger.logged.get(0) + ); + } else { + assertEquals(0, logger.logged.size()); + } + } + } finally { + RawDataBlock.log = oldLogger; } } @@ -136,46 +139,49 @@ public final class TestRawDataBlock extends TestCase { */ public void testSlowInputStream() throws Exception { // Get the logger to be used - DummyPOILogger logger = new DummyPOILogger(); - Field fld = RawDataBlock.class.getDeclaredField("log"); - fld.setAccessible(true); - fld.set(null, logger); - assertEquals(0, logger.logged.size()); - - // Test for various ok data sizes - for (int k = 1; k < 512; k++) { - byte[] data = new byte[ 512 ]; - for (int j = 0; j < data.length; j++) { - data[j] = (byte) j; - } - - // Shouldn't complain, as there is enough data, - // even if it dribbles through - RawDataBlock block = - new RawDataBlock(new SlowInputStream(data, k)); - assertFalse(block.eof()); - } - - // But if there wasn't enough data available, will - // complain - for (int k = 1; k < 512; k++) { - byte[] data = new byte[ 511 ]; - for (int j = 0; j < data.length; j++) { - data[j] = (byte) j; - } - - logger.reset(); - assertEquals(0, logger.logged.size()); - - // Should complain, as there isn't enough data - RawDataBlock block = - new RawDataBlock(new SlowInputStream(data, k)); - assertNotNull(block); - assertEquals( - "Warning on " + k + " byte short block", - 1, logger.logged.size() - ); - } + POILogger oldLogger = RawDataBlock.log; + DummyPOILogger logger = new DummyPOILogger(); + try { + RawDataBlock.log = logger; + assertEquals(0, logger.logged.size()); + + // Test for various ok data sizes + for (int k = 1; k < 512; k++) { + byte[] data = new byte[ 512 ]; + for (int j = 0; j < data.length; j++) { + data[j] = (byte) j; + } + + // Shouldn't complain, as there is enough data, + // even if it dribbles through + RawDataBlock block = + new RawDataBlock(new SlowInputStream(data, k)); + assertFalse(block.eof()); + } + + // But if there wasn't enough data available, will + // complain + for (int k = 1; k < 512; k++) { + byte[] data = new byte[ 511 ]; + for (int j = 0; j < data.length; j++) { + data[j] = (byte) j; + } + + logger.reset(); + assertEquals(0, logger.logged.size()); + + // Should complain, as there isn't enough data + RawDataBlock block = + new RawDataBlock(new SlowInputStream(data, k)); + assertNotNull(block); + assertEquals( + "Warning on " + k + " byte short block", + 1, logger.logged.size() + ); + } + } finally { + RawDataBlock.log = oldLogger; + } } /** diff --git a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java index 91be31e34d..cc38bbc516 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java @@ -19,12 +19,11 @@ package org.apache.poi.poifs.storage; import java.io.ByteArrayInputStream; import java.io.IOException; -import java.lang.reflect.Field; - import junit.framework.TestCase; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.DummyPOILogger; +import org.apache.poi.util.POILogger; /** * Class to test RawDataBlockList functionality @@ -57,26 +56,29 @@ public final class TestRawDataBlockList extends TestCase { */ public void testShortConstructor() throws Exception { // Get the logger to be used + POILogger oldLogger = RawDataBlock.log; DummyPOILogger logger = new DummyPOILogger(); - Field fld = RawDataBlock.class.getDeclaredField("log"); - fld.setAccessible(true); - fld.set(null, logger); - assertEquals(0, logger.logged.size()); - - // Test for various short sizes - for (int k = 2049; k < 2560; k++) - { - byte[] data = new byte[ k ]; - - for (int j = 0; j < k; j++) + try { + RawDataBlock.log = logger; + assertEquals(0, logger.logged.size()); + + // Test for various short sizes + for (int k = 2049; k < 2560; k++) { - data[ j ] = ( byte ) j; + byte[] data = new byte[ k ]; + + for (int j = 0; j < k; j++) + { + data[ j ] = ( byte ) j; + } + + // Check we logged the error + logger.reset(); + new RawDataBlockList(new ByteArrayInputStream(data), POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS); + assertEquals(1, logger.logged.size()); } - - // Check we logged the error - logger.reset(); - new RawDataBlockList(new ByteArrayInputStream(data), POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS); - assertEquals(1, logger.logged.size()); + } finally { + RawDataBlock.log = oldLogger; } } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java b/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java index 63e0c6c97c..eb1b570300 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java @@ -947,15 +947,4 @@ public class TestMathX extends AbstractNumericTestCase { d = 2d/3; s = 3.33; assertEquals("floor ", 0, MathX.floor(d, s)); } - - public void testCoverage() throws Exception { - // get the default constructor - final Constructor c = MathX.class.getDeclaredConstructor(new Class[] {}); - - // make it callable from the outside - c.setAccessible(true); - - // call it - c.newInstance((Object[]) null); - } } diff --git a/src/testcases/org/apache/poi/util/TestHexDump.java b/src/testcases/org/apache/poi/util/TestHexDump.java index 7509363c52..30cd8256a4 100644 --- a/src/testcases/org/apache/poi/util/TestHexDump.java +++ b/src/testcases/org/apache/poi/util/TestHexDump.java @@ -240,19 +240,6 @@ public class TestHexDump { byteOut.close(); } - @Test - public void testConstruct() throws Exception { - // to cover private constructor - // get the default constructor - final Constructor c = HexDump.class.getDeclaredConstructor(new Class[] {}); - - // make it callable from the outside - c.setAccessible(true); - - // call it - assertNotNull(c.newInstance((Object[]) null)); - } - @Test public void testMain() throws Exception { File file = TempFile.createTempFile("HexDump", ".dat"); diff --git a/src/testcases/org/apache/poi/util/TestPOILogger.java b/src/testcases/org/apache/poi/util/TestPOILogger.java index 7fc5824d45..a9a5a880eb 100644 --- a/src/testcases/org/apache/poi/util/TestPOILogger.java +++ b/src/testcases/org/apache/poi/util/TestPOILogger.java @@ -22,8 +22,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.lang.reflect.Field; - import org.junit.Test; /** @@ -42,11 +40,9 @@ public final class TestPOILogger extends POILogger { */ @Test public void testVariousLogTypes() throws Exception { - Field f = POILogFactory.class.getDeclaredField("_loggerClassName"); - f.setAccessible(true); - String oldLCN = (String)f.get(null); + String oldLCN = POILogFactory._loggerClassName; try { - f.set(null, TestPOILogger.class.getName()); + POILogFactory._loggerClassName = TestPOILogger.class.getName(); POILogger log = POILogFactory.getLogger( "foo" ); assertTrue(log instanceof TestPOILogger); @@ -71,7 +67,7 @@ public final class TestPOILogger extends POILogger { log.log(POILogger.ERROR, "log\nforging", "\nevil","\nlog"); assertEquals("log forging evil log", tlog.lastLog); } finally { - f.set(null, oldLCN); + POILogFactory._loggerClassName = oldLCN; } } -- 2.39.5