You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by us...@apache.org on 2015/11/11 17:57:39 UTC
svn commit: r1713891 - in /poi/trunk/src: java/org/apache/poi/poifs/storage/
java/org/apache/poi/util/ ooxml/testcases/org/apache/poi/openxml4j/opc/
ooxml/testcases/org/apache/poi/poifs/crypt/
ooxml/testcases/org/apache/poi/xslf/usermodel/ ooxml/testca...
Author: uschindler
Date: Wed Nov 11 16:57:39 2015
New Revision: 1713891
URL: http://svn.apache.org/viewvc?rev=1713891&view=rev
Log:
#58597: Fix tests to not do setAccessible(), add some doPrivileged, too.
Modified:
poi/trunk/src/java/org/apache/poi/poifs/storage/RawDataBlock.java
poi/trunk/src/java/org/apache/poi/util/POILogFactory.java
poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java
poi/trunk/src/testcases/org/apache/poi/POITestCase.java
poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java
poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java
poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java
poi/trunk/src/testcases/org/apache/poi/util/TestHexDump.java
poi/trunk/src/testcases/org/apache/poi/util/TestPOILogger.java
Modified: poi/trunk/src/java/org/apache/poi/poifs/storage/RawDataBlock.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/storage/RawDataBlock.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/storage/RawDataBlock.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/storage/RawDataBlock.java Wed Nov 11 16:57:39 2015
@@ -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
Modified: poi/trunk/src/java/org/apache/poi/util/POILogFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/POILogFactory.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/POILogFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/POILogFactory.java Wed Nov 11 16:57:39 2015
@@ -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.
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java Wed Nov 11 16:57:39 2015
@@ -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
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java Wed Nov 11 16:57:39 2015
@@ -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
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java Wed Nov 11 16:57:39 2015
@@ -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 {
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java Wed Nov 11 16:57:39 2015
@@ -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 ext
@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 ext
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());
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java Wed Nov 11 16:57:39 2015
@@ -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 TestDocumentPropertie
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<Field[]>() {
+ @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
Modified: poi/trunk/src/testcases/org/apache/poi/POITestCase.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/POITestCase.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/POITestCase.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/POITestCase.java Wed Nov 11 16:57:39 2015
@@ -21,8 +21,15 @@ import static org.junit.Assert.assertFal
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,T> R getFieldValue(final Class<? super T> clazz, final T instance, final Class<R> fieldType, final String fieldName) {
+ try {
+ return AccessController.doPrivileged(new PrivilegedExceptionAction<R>() {
+ @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,T> R callMethod(final Class<? super T> clazz, final T instance, final Class<R> returnType, final String methodName,
+ final Class<?>[] parameterTypes, final Object[] parameters) {
+ try {
+ return AccessController.doPrivileged(new PrivilegedExceptionAction<R>() {
+ @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);
+ }
+ }
}
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java Wed Nov 11 16:57:39 2015
@@ -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 TestSharedValueManage
* {@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() {
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java Wed Nov 11 16:57:39 2015
@@ -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
* @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() {
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java Wed Nov 11 16:57:39 2015
@@ -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 Test
}
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(){
Modified: poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java Wed Nov 11 16:57:39 2015
@@ -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 exte
*/
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 exte
*/
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;
+ }
}
/**
Modified: poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java Wed Nov 11 16:57:39 2015
@@ -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
*/
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;
}
}
}
Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java Wed Nov 11 16:57:39 2015
@@ -947,15 +947,4 @@ public class TestMathX extends AbstractN
d = 2d/3; s = 3.33;
assertEquals("floor ", 0, MathX.floor(d, s));
}
-
- public void testCoverage() throws Exception {
- // get the default constructor
- final Constructor<MathX> c = MathX.class.getDeclaredConstructor(new Class[] {});
-
- // make it callable from the outside
- c.setAccessible(true);
-
- // call it
- c.newInstance((Object[]) null);
- }
}
Modified: poi/trunk/src/testcases/org/apache/poi/util/TestHexDump.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/util/TestHexDump.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/util/TestHexDump.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/util/TestHexDump.java Wed Nov 11 16:57:39 2015
@@ -241,19 +241,6 @@ public class TestHexDump {
}
@Test
- public void testConstruct() throws Exception {
- // to cover private constructor
- // get the default constructor
- final Constructor<HexDump> 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");
try {
Modified: poi/trunk/src/testcases/org/apache/poi/util/TestPOILogger.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/util/TestPOILogger.java?rev=1713891&r1=1713890&r2=1713891&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/util/TestPOILogger.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/util/TestPOILogger.java Wed Nov 11 16:57:39 2015
@@ -22,8 +22,6 @@ import static org.junit.Assert.assertEqu
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
*/
@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
log.log(POILogger.ERROR, "log\nforging", "\nevil","\nlog");
assertEquals("log forging evil log", tlog.lastLog);
} finally {
- f.set(null, oldLCN);
+ POILogFactory._loggerClassName = oldLCN;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org