]> source.dussan.org Git - poi.git/commitdiff
#58597: Fix tests to not do setAccessible(), add some doPrivileged, too.
authorUwe Schindler <uschindler@apache.org>
Wed, 11 Nov 2015 16:57:39 +0000 (16:57 +0000)
committerUwe Schindler <uschindler@apache.org>
Wed, 11 Nov 2015 16:57:39 +0000 (16:57 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1713891 13f79535-47bb-0310-9956-ffa450edef68

16 files changed:
src/java/org/apache/poi/poifs/storage/RawDataBlock.java
src/java/org/apache/poi/util/POILogFactory.java
src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java
src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java
src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java
src/scratchpad/testcases/org/apache/poi/hwpf/model/TestDocumentProperties.java
src/testcases/org/apache/poi/POITestCase.java
src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java
src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java
src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java
src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java
src/testcases/org/apache/poi/util/TestHexDump.java
src/testcases/org/apache/poi/util/TestPOILogger.java

index 018ee8ff2e79d46835ded71279272c95f23a7998..923e76fac83c81bec0831057bcdb48b46d8cf77a 100644 (file)
@@ -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
index 7af73e3a87be061435b30497b4c94f93f16a1e04..1227a0d5ca6bb63b643f1bcda08200886102cc3e 100644 (file)
@@ -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.
index 5c3f688cb440e723a25e0f6142b4435b20209502..d412d97d340cee1d98b9b8998c9fe27252c071d3 100644 (file)
@@ -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
index e3a6e47d76bc1cad7fb5d10d40f6ba2351ce9927..6f43fdd1f1843bcaeef8b67fa1f3c7e4e9ceb237 100644 (file)
@@ -34,7 +34,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;\r
 import java.io.InputStream;\r
 import java.io.OutputStream;\r
-import java.lang.reflect.Method;\r
 import java.net.ConnectException;\r
 import java.net.HttpURLConnection;\r
 import java.net.MalformedURLException;\r
@@ -54,6 +53,7 @@ import java.util.Iterator;
 import java.util.List;\r
 \r
 import org.apache.poi.POIDataSamples;\r
+import org.apache.poi.POITestCase;\r
 import org.apache.poi.openxml4j.opc.OPCPackage;\r
 import org.apache.poi.openxml4j.opc.PackageAccess;\r
 import org.apache.poi.poifs.crypt.dsig.DigestInfo;\r
@@ -247,9 +247,7 @@ public class TestSignatureInfo {
         XSSFWorkbook wb = new XSSFWorkbook(pkg);\r
         wb.setSheetName(0, "manipulated");\r
         // ... I don't know, why commit is protected ...\r
-        Method m = XSSFWorkbook.class.getDeclaredMethod("commit");\r
-        m.setAccessible(true);\r
-        m.invoke(wb);\r
+        POITestCase.callMethod(XSSFWorkbook.class, wb, Void.class, "commit", new Class[0], new Object[0]);\r
 \r
         // todo: test a manipulation on a package part, which is not signed\r
         // ... maybe in combination with #56164 \r
index 2c72f0a4472dfcf828efcfa73277e3df1b3de9e9..1ccf24df1f051a1663f45de792a5b6cdfe249e2f 100644 (file)
 package org.apache.poi.xslf.usermodel;\r
 \r
 import java.io.File;\r
-import java.lang.reflect.Field;\r
 \r
 import org.apache.poi.POIDataSamples;\r
 import org.apache.poi.xslf.util.PPTX2PNG;\r
-import org.junit.AfterClass;\r
-import org.junit.BeforeClass;\r
 import org.junit.Test;\r
 \r
 /**\r
@@ -34,32 +31,6 @@ import org.junit.Test;
  * @author Yegor Kozlov\r
  */\r
 public class TestPPTX2PNG {\r
-    private static boolean jaxpDebugEnable = false;\r
-    \r
-    @BeforeClass\r
-    public static void activateJaxpDebug() {\r
-        jaxpDebugEnable = setDebugFld(true);\r
-    }\r
-\r
-    @AfterClass\r
-    public static void resetJaxpDebug() {\r
-        setDebugFld(jaxpDebugEnable);\r
-    }    \r
-    \r
-    private static boolean setDebugFld(boolean enable) {\r
-        // enable jaxp debugging because of jaxb/stax error in gump build\r
-        try {\r
-            Class<?> clz = Class.forName("javax.xml.stream.FactoryFinder");\r
-            Field fld = clz.getDeclaredField("debug");\r
-            fld.setAccessible(true);\r
-            boolean isDebug = (Boolean)fld.get(null);\r
-            fld.set(null, enable);\r
-            return isDebug;\r
-        } catch (Exception e) {\r
-            // ignore\r
-            return false;\r
-        }\r
-    }\r
     \r
     @Test\r
     public void render() throws Exception {\r
index 230db006ea52fe0df4b13b6e0471d7503a5d9bb8..cd87fe6238f3390b2eaaa37a79c0b9162bf3f1c4 100644 (file)
@@ -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());
 
index 317ea8bf00d9844c1058f0967342a9cce1cc7307..b600f07763876e977a08ad643a0fa1c2e306ecbf 100644 (file)
@@ -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<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
index 6de936fddfbf9ac0487909fff2ed3de93734ea74..f25a7853ecdb4ca82488e0b5ee1f2b63e6408043 100644 (file)
@@ -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,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);
+         }
+     }
 }
index aea5b321e36c3bac2deb10074112950693089d84..9c4f8ab7bf5c26b34a4a0b73c2ca689ae31860d8 100644 (file)
 
 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() {
index cd8e1e9b9228225d32abea08874440319d2055e3..2a92a95165134153b37bd9f38e76a8cea0308a5a 100644 (file)
@@ -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() {
index 176b39f4c96645879baf18299c1dcdedc63d42fd..570a3a32613f5e098c808fbd4bfb266b4f4a280c 100644 (file)
@@ -18,6 +18,8 @@
 package org.apache.poi.hssf.usermodel;\r
 \r
 import junit.framework.TestCase;\r
+\r
+import org.apache.poi.POITestCase;\r
 import org.apache.poi.ddf.EscherContainerRecord;\r
 import org.apache.poi.ddf.EscherSpgrRecord;\r
 import org.apache.poi.hssf.HSSFTestDataSamples;\r
@@ -228,17 +230,7 @@ public class TestShapeGroup extends TestCase{
     }\r
 \r
     private static EscherSpgrRecord getSpgrRecord(HSSFShapeGroup group) {\r
-        Field spgrField = null;\r
-        try {\r
-            spgrField = group.getClass().getDeclaredField("_spgrRecord");\r
-            spgrField.setAccessible(true);\r
-            return (EscherSpgrRecord) spgrField.get(group);\r
-        } catch (NoSuchFieldException e) {\r
-            e.printStackTrace();\r
-        } catch (IllegalAccessException e) {\r
-            e.printStackTrace();\r
-        }\r
-        return null;\r
+        return POITestCase.getFieldValue(HSSFShapeGroup.class, group, EscherSpgrRecord.class, "_spgrRecord");\r
     }\r
 \r
     public void testClearShapes(){\r
index f7be2acf71bcfb7232ac74bae61519134cbde061..349d62f091fac832e52059f096f7d80827027849 100644 (file)
@@ -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;
+        }
        }
 
        /**
index 91be31e34d9eddb8b99ed3503ad21ddef4710075..cc38bbc516f6cb037075270f17215b7ffe3934da 100644 (file)
@@ -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;
         }
     }
 }
index 63e0c6c97c3b216cae8cc935b85b6d0b2d0bfbc8..eb1b570300b942468ae21c613eb217d33e3baea5 100644 (file)
@@ -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<MathX> c = MathX.class.getDeclaredConstructor(new Class[] {});
-
-        // make it callable from the outside
-        c.setAccessible(true);
-
-        // call it
-        c.newInstance((Object[]) null);
-    }
 }
index 7509363c52f57fd583a3c343233b7ff8b81b0501..30cd8256a4242a7c9cbe0a42a719c1be1911a3fb 100644 (file)
@@ -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<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");
index 7fc5824d452b5b1085e8f66df1cbd6fed4d8453e..a9a5a880ebff54bbb1facee8b5799c2029aff2e9 100644 (file)
@@ -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;
         }
     }