You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2016/06/30 22:59:47 UTC

svn commit: r1750867 - in /poi/trunk/src: java/org/apache/poi/hssf/dev/ java/org/apache/poi/util/ ooxml/testcases/org/apache/poi/openxml4j/opc/ testcases/org/apache/poi/hssf/dev/

Author: kiwiwings
Date: Thu Jun 30 22:59:46 2016
New Revision: 1750867

URL: http://svn.apache.org/viewvc?rev=1750867&view=rev
Log:
a few performance fixes to speed-up the tests

Modified:
    poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java
    poi/trunk/src/java/org/apache/poi/hssf/dev/FormulaViewer.java
    poi/trunk/src/java/org/apache/poi/hssf/dev/ReSave.java
    poi/trunk/src/java/org/apache/poi/util/HexDump.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/BaseXLSIteratingTest.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
    poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java Thu Jun 30 22:59:46 2016
@@ -204,8 +204,8 @@ import org.apache.poi.util.StringUtil;
  * @see        #main
  */
 public final class BiffViewer {
-    static final String NEW_LINE_CHARS = System.getProperty("line.separator");
-    private static POILogger logger = POILogFactory.getLogger(BiffViewer.class);
+    private static final char[] NEW_LINE_CHARS = System.getProperty("line.separator").toCharArray();
+    private static final POILogger logger = POILogFactory.getLogger(BiffViewer.class);
 
     private BiffViewer() {
         // no instances of this class
@@ -804,39 +804,55 @@ public final class BiffViewer {
 	}
 
 	private static void hexDumpLine(Writer w, byte[] data, int lineStartAddress, int lineDataOffset, int startDelta, int endDelta) {
-		if (startDelta >= endDelta) {
+	    final char[] buf = new char[8+2*COLUMN_SEPARATOR.length+DUMP_LINE_LEN*3-1+DUMP_LINE_LEN+NEW_LINE_CHARS.length];
+
+	    if (startDelta >= endDelta) {
 			throw new IllegalArgumentException("Bad start/end delta");
 		}
+	    int idx=0;
 		try {
-			writeHex(w, lineStartAddress, 8);
-			w.write(COLUMN_SEPARATOR);
+			writeHex(buf, idx, lineStartAddress, 8);
+			idx = arraycopy(COLUMN_SEPARATOR, buf, idx+8);
 			// raw hex data
 			for (int i=0; i< DUMP_LINE_LEN; i++) {
 				if (i>0) {
-					w.write(" ");
+				    buf[idx++] = ' ';
 				}
 				if (i >= startDelta && i < endDelta) {
-					writeHex(w, data[lineDataOffset+i], 2);
+					writeHex(buf, idx, data[lineDataOffset+i], 2);
 				} else {
-					w.write("  ");
+				    buf[idx] = ' ';
+				    buf[idx+1] = ' ';
 				}
+				idx += 2;
 			}
-			w.write(COLUMN_SEPARATOR);
+			idx = arraycopy(COLUMN_SEPARATOR, buf, idx);
 
 			// interpreted ascii
 			for (int i=0; i< DUMP_LINE_LEN; i++) {
+			    char ch = ' ';
 				if (i >= startDelta && i < endDelta) {
-					w.write(getPrintableChar(data[lineDataOffset+i]));
-				} else {
-					w.write(" ");
+				    ch = getPrintableChar(data[lineDataOffset+i]);
 				}
+				buf[idx++] = ch;
 			}
-			w.write(NEW_LINE_CHARS);
+
+			idx = arraycopy(NEW_LINE_CHARS, buf, idx);
+			
+			w.write(buf, 0, idx);
 		} catch (IOException e) {
 			throw new RuntimeException(e);
 		}
 	}
 
+	private static int arraycopy(char[] in, char[] out, int pos) {
+	    int idx = pos;
+	    for (char c : in) {
+	        out[idx++] = c;
+	    }
+	    return idx;
+	}
+	
 	private static char getPrintableChar(byte b) {
 		char ib = (char) (b & 0x00FF);
 		if (ib < 32 || ib > 126) {
@@ -845,14 +861,12 @@ public final class BiffViewer {
 		return ib;
 	}
 
-	private static void writeHex(Writer w, int value, int nDigits) throws IOException {
-		char[] buf = new char[nDigits];
+	private static void writeHex(char buf[], int startInBuf, int value, int nDigits) throws IOException {
 		int acc = value;
 		for(int i=nDigits-1; i>=0; i--) {
 			int digit = acc & 0x0F;
-			buf[i] = (char) (digit < 10 ? ('0' + digit) : ('A' + digit - 10));
-			acc >>= 4;
+			buf[startInBuf+i] = (char) (digit < 10 ? ('0' + digit) : ('A' + digit - 10));
+			acc >>>= 4;
 		}
-		w.write(buf);
 	}
 }

Modified: poi/trunk/src/java/org/apache/poi/hssf/dev/FormulaViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/dev/FormulaViewer.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/dev/FormulaViewer.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/dev/FormulaViewer.java Thu Jun 30 22:59:46 2016
@@ -98,7 +98,7 @@ public class FormulaViewer
             StringBuffer buf = new StringBuffer();
             
             if (token instanceof ExpPtg) return;
-            buf.append(((OperationPtg) token).toFormulaString());
+            buf.append(token.toFormulaString());
             buf.append(sep);
             switch (token.getPtgClass()) {
                 case Ptg.CLASS_REF :

Modified: poi/trunk/src/java/org/apache/poi/hssf/dev/ReSave.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/dev/ReSave.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/dev/ReSave.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/dev/ReSave.java Thu Jun 30 22:59:46 2016
@@ -17,8 +17,10 @@
 
 package org.apache.poi.hssf.dev;
 
+import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.OutputStream;
 
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -29,13 +31,19 @@ import org.apache.poi.hssf.usermodel.HSS
  *
  *  Usage: ReSave [-dg] input.xls
  *    -dg    initialize drawings, causes to re-build escher aggregates in all sheets
+ *    -bos   only write to memory instead of a file
  */
 public class ReSave {
     public static void main(String[] args) throws Exception {
         boolean initDrawing = false;
+        boolean saveToMemory = false;
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
         for(String filename : args) {
-            if(filename.equals("-dg")) initDrawing = true;
-            else {
+            if(filename.equals("-dg")) {
+                initDrawing = true;
+            } else if(filename.equals("-bos")) {
+                saveToMemory = true;
+            } else {
                 System.out.print("reading " + filename + "...");
                 FileInputStream is = new FileInputStream(filename);
                 HSSFWorkbook wb = new HSSFWorkbook(is);
@@ -48,18 +56,26 @@ public class ReSave {
                             /*HSSFPatriarch dg =*/ sheet.getDrawingPatriarch();
                         }
                     }
-    
-                    String outputFile = filename.replace(".xls", "-saved.xls");
-                    System.out.print("saving to " + outputFile + "...");
-                    FileOutputStream out = new FileOutputStream(outputFile);
+
+                    OutputStream os;
+                    if (saveToMemory) {
+                        bos.reset();
+                        os = bos;
+                    } else {
+                        String outputFile = filename.replace(".xls", "-saved.xls");
+                        System.out.print("saving to " + outputFile + "...");
+                        os = new FileOutputStream(outputFile);
+                    }
+                    
                     try {
-                        wb.write(out);
+                        wb.write(os);
                     } finally {
-                        out.close();
+                        os.close();
                     }
                     System.out.println("done");
                 } finally {
                     wb.close();
+                    is.close();
                 }
             }
         }

Modified: poi/trunk/src/java/org/apache/poi/util/HexDump.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/HexDump.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/HexDump.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/HexDump.java Thu Jun 30 22:59:46 2016
@@ -27,7 +27,6 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintStream;
 import java.nio.charset.Charset;
-import java.util.Locale;
 
 import org.apache.commons.codec.CharEncoding;
 
@@ -149,10 +148,10 @@ public class HexDump {
                 chars_read = 16;
             }
             
-            buffer.append(xpad(display_offset, 8, ""));
+            writeHex(buffer, display_offset, 8, "");
             for (int k = 0; k < 16; k++) {
                 if (k < chars_read) {
-                    buffer.append(xpad(data[ k + j ], 2, " "));
+                    writeHex(buffer, data[ k + j ], 2, " ");
                 } else {
                     buffer.append("   ");
                 }
@@ -243,12 +242,12 @@ public class HexDump {
         }
         final int digits = (int) Math.round(Math.log(value.length) / Math.log(10) + 0.5);
         StringBuilder retVal = new StringBuilder();
-        retVal.append(xpad(0, digits, ""));
+        writeHex(retVal, 0, digits, "");
         retVal.append(": ");
         for(int x=0, i=-1; x < value.length; x++) {
             if (++i == bytesPerLine) {
                 retVal.append('\n');
-                retVal.append(xpad(x, digits, ""));
+                writeHex(retVal, x, digits, "");
                 retVal.append(": ");
                 i = 0;
             } else if (x>0) {
@@ -266,7 +265,9 @@ public class HexDump {
      * @return          The result right padded with 0
      */
     public static String toHex(short value) {
-        return xpad(value & 0xFFFF, 4, "");
+        StringBuilder sb = new StringBuilder(4);
+        writeHex(sb, value & 0xFFFF, 4, "");
+        return sb.toString();
     }
 
     /**
@@ -276,7 +277,9 @@ public class HexDump {
      * @return          The result right padded with 0
      */
     public static String toHex(byte value) {
-        return xpad(value & 0xFF, 2, "");
+        StringBuilder sb = new StringBuilder(2);
+        writeHex(sb, value & 0xFF, 2, "");
+        return sb.toString();
     }
 
     /**
@@ -286,7 +289,9 @@ public class HexDump {
      * @return          The result right padded with 0
      */
     public static String toHex(int value) {
-        return xpad(value & 0xFFFFFFFFL, 8, "");
+        StringBuilder sb = new StringBuilder(8);
+        writeHex(sb, value & 0xFFFFFFFFL, 8, "");
+        return sb.toString();
     }
 
     /**
@@ -296,7 +301,9 @@ public class HexDump {
      * @return          The result right padded with 0
      */
     public static String toHex(long value) {
-        return xpad(value, 16, "");
+        StringBuilder sb = new StringBuilder(16);
+        writeHex(sb, value, 16, "");
+        return sb.toString();
     }
 
     /**
@@ -352,46 +359,51 @@ public class HexDump {
      * @return string of 16 (zero padded) uppercase hex chars and prefixed with '0x'
      */
     public static String longToHex(long value) {
-        return xpad(value, 16, "0x");
+        StringBuilder sb = new StringBuilder(18);
+        writeHex(sb, value, 16, "0x");
+        return sb.toString();
     }
     
     /**
      * @return string of 8 (zero padded) uppercase hex chars and prefixed with '0x'
      */
     public static String intToHex(int value) {
-        return xpad(value & 0xFFFFFFFFL, 8, "0x");
+        StringBuilder sb = new StringBuilder(10);
+        writeHex(sb, value & 0xFFFFFFFFL, 8, "0x");
+        return sb.toString();
     }
     
     /**
      * @return string of 4 (zero padded) uppercase hex chars and prefixed with '0x'
      */
     public static String shortToHex(int value) {
-        return xpad(value & 0xFFFFL, 4, "0x");
+        StringBuilder sb = new StringBuilder(6);
+        writeHex(sb, value & 0xFFFFL, 4, "0x");
+        return sb.toString();
     }
     
     /**
      * @return string of 2 (zero padded) uppercase hex chars and prefixed with '0x'
      */
     public static String byteToHex(int value) {
-        return xpad(value & 0xFFL, 2, "0x");
-    }
-
-    private static String xpad(long value, int pad, String prefix) {
-        String sv = Long.toHexString(value).toUpperCase(Locale.ROOT);
-        int len = sv.length();
-        if ((pad == 0 || len == pad) && "".equals(prefix)) return sv;
-        StringBuilder sb = new StringBuilder(prefix);
-        if (len < pad) {
-            sb.append("0000000000000000", 0, pad-len);
-            sb.append(sv);
-        } else if (len > pad) {
-            sb.append(sv, len-pad, len);
-        } else {
-            sb.append(sv);
-        }
+        StringBuilder sb = new StringBuilder(4);
+        writeHex(sb, value & 0xFFL, 2, "0x");
         return sb.toString();
     }
     
+    private static void writeHex(StringBuilder sb, long value, int nDigits, String prefix) {
+        sb.append(prefix);
+        char[] buf = new char[nDigits];
+        long acc = value;
+        for(int i=nDigits-1; i>=0; i--) {
+            int digit = (int)(acc & 0x0F);
+            buf[i] = (char) (digit < 10 ? ('0' + digit) : ('A' + digit - 10));
+            acc >>>= 4;
+        }
+        sb.append(buf);
+    }    
+    
+    
     public static void main(String[] args) throws Exception {
         File file = new File(args[0]);
         InputStream in = new BufferedInputStream(new FileInputStream(file));

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=1750867&r1=1750866&r2=1750867&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 Thu Jun 30 22:59:46 2016
@@ -786,7 +786,7 @@ public final class TestPackage {
         ZipFile zipFile = ZipHelper.openZipFile(OpenXML4JTestDataSamples.getSampleFile("sample.xlsx"));
 		assertNotNull(zipFile);
 
-		ByteArrayOutputStream bos = new ByteArrayOutputStream();
+		ByteArrayOutputStream bos = new ByteArrayOutputStream(2500000);
 		ZipOutputStream append = new ZipOutputStream(bos);
 		// first, copy contents from existing war
         Enumeration<? extends ZipEntry> entries = zipFile.entries();
@@ -807,7 +807,8 @@ public final class TestPackage {
                     append.write(bos2.toByteArray(), 0, (int)size);
                     byte spam[] = new byte[0x7FFF];
                     for (int i=0; i<spam.length; i++) spam[i] = ' ';
-                    while (size < 0x7FFF0000) {
+                    // 0x7FFF0000 is the maximum for 32-bit zips, but less still works
+                    while (size < 0x7FFF00) {
                         append.write(spam);
                         size += spam.length;
                     }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/BaseXLSIteratingTest.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/BaseXLSIteratingTest.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/BaseXLSIteratingTest.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/BaseXLSIteratingTest.java Thu Jun 30 22:59:46 2016
@@ -24,14 +24,17 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.junit.Assume;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameter;
@@ -47,7 +50,11 @@ import org.junit.runners.Parameterized.P
 public abstract class BaseXLSIteratingTest {
     protected static final OutputStream NULL_OUTPUT_STREAM = new NullOutputStream();
 
-	protected static final List<String> EXCLUDED = new ArrayList<String>();
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+    
+	protected static final Map<String,Class<? extends Throwable>> EXCLUDED =
+        new HashMap<String,Class<? extends Throwable>>();
 
     @Parameters(name="{index}: {0}")
     public static Iterable<Object[]> files() {
@@ -85,16 +92,15 @@ public abstract class BaseXLSIteratingTe
 	public void testMain() throws Exception {
 	    // we had intermittent problems when this was set differently somehow, let's try to set it here so it always is set correctly for these tests
 	    Biff8EncryptionKey.setCurrentUserPassword(null);
+
+	    String fileName = file.getName();
+	    if (EXCLUDED.containsKey(fileName)) {
+	        thrown.expect(EXCLUDED.get(fileName));
+	    }
 	    
 		try {
 			runOneFile(file);
 		} catch (Exception e) {
-		    Assume.assumeFalse("File " + file + " is excluded currently",
-		            EXCLUDED.contains(file.getName()));
-
-			System.out.println("Failed: " + file);
-			e.printStackTrace();
-			
 			// try to read it in HSSFWorkbook to quickly fail if we cannot read the file there at all and thus probably should use EXCLUDED instead
 			FileInputStream stream = new FileInputStream(file);
 			HSSFWorkbook wb = null;
@@ -107,6 +113,8 @@ public abstract class BaseXLSIteratingTe
 			    }
 				stream.close();
 			}
+			
+			throw e;
 		}
 	}
 

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java Thu Jun 30 22:59:46 2016
@@ -21,22 +21,29 @@ import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.PrintStream;
 
+import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.hssf.OldExcelFormatException;
+import org.apache.poi.hssf.record.RecordInputStream;
+import org.junit.BeforeClass;
+
 public class TestBiffDrawingToXml extends BaseXLSIteratingTest {
-	static {
-        EXCLUDED.add("35897-type4.xls"); // unsupported crypto api header 
-        EXCLUDED.add("43493.xls");  // HSSFWorkbook cannot open it as well
-        EXCLUDED.add("46904.xls");
-        EXCLUDED.add("44958_1.xls");
-        EXCLUDED.add("51832.xls");
-        EXCLUDED.add("59074.xls");
-		EXCLUDED.add("password.xls"); 
-        EXCLUDED.add("testEXCEL_2.xls");  // Biff 2 / Excel 2, pre-OLE2
-        EXCLUDED.add("testEXCEL_3.xls");  // Biff 3 / Excel 3, pre-OLE2
-        EXCLUDED.add("testEXCEL_4.xls");  // Biff 4 / Excel 4, pre-OLE2
-        EXCLUDED.add("testEXCEL_5.xls");  // Biff 5 / Excel 5
-        EXCLUDED.add("testEXCEL_95.xls"); // Biff 5 / Excel 95
-		EXCLUDED.add("xor-encryption-abc.xls"); 
-	}
+    @BeforeClass
+    public static void setup() {
+        EXCLUDED.clear();
+        EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header 
+        EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
+        EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("password.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("46904.xls", OldExcelFormatException.class);
+        EXCLUDED.put("59074.xls", OldExcelFormatException.class);
+        EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class);  // Biff 2 / Excel 2, pre-OLE2
+        EXCLUDED.put("testEXCEL_3.xls", OldExcelFormatException.class);  // Biff 3 / Excel 3, pre-OLE2
+        EXCLUDED.put("testEXCEL_4.xls", OldExcelFormatException.class);  // Biff 4 / Excel 4, pre-OLE2
+        EXCLUDED.put("testEXCEL_5.xls", OldExcelFormatException.class);  // Biff 5 / Excel 5
+        EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
+        EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
+        EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
+    }
 	
 	@Override
 	void runOneFile(File pFile) throws Exception {

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java Thu Jun 30 22:59:46 2016
@@ -22,28 +22,32 @@ import java.io.InputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 
+import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.hssf.OldExcelFormatException;
+import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
 import org.apache.poi.util.LocaleUtil;
+import org.junit.BeforeClass;
 
 public class TestBiffViewer extends BaseXLSIteratingTest {
-    static {
-        // these are likely ok to fail
-        EXCLUDED.add("XRefCalc.xls"); 	// "Buffer overrun"
-        EXCLUDED.add("50833.xls"); 		// "Name is too long" when setting username
-        EXCLUDED.add("OddStyleRecord.xls");		
-        EXCLUDED.add("NoGutsRecords.xls"); 
-        EXCLUDED.add("51832.xls");	// password 
-        EXCLUDED.add("43493.xls");	// HSSFWorkbook cannot open it as well
-        EXCLUDED.add("password.xls"); 
-        EXCLUDED.add("46904.xls");
-        EXCLUDED.add("59074.xls"); // Biff 5 / Excel 95
-        EXCLUDED.add("35897-type4.xls"); // unsupported crypto api header 
-        EXCLUDED.add("xor-encryption-abc.xls"); // unsupported XOR-encryption
-        EXCLUDED.add("testEXCEL_2.xls");  // Biff 2 / Excel 2, pre-OLE2
-        EXCLUDED.add("testEXCEL_3.xls");  // Biff 3 / Excel 3, pre-OLE2
-        EXCLUDED.add("testEXCEL_4.xls");  // Biff 4 / Excel 4, pre-OLE2
-        EXCLUDED.add("testEXCEL_5.xls");  // Biff 5 / Excel 5
-        EXCLUDED.add("testEXCEL_95.xls"); // Biff 5 / Excel 95
+    @BeforeClass
+    public static void setup() {
+        EXCLUDED.clear();
+        EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header 
+        EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
+        EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("password.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("46904.xls", OldExcelFormatException.class);
+        EXCLUDED.put("59074.xls", OldExcelFormatException.class);
+        EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class);  // Biff 2 / Excel 2, pre-OLE2
+        EXCLUDED.put("testEXCEL_3.xls", OldExcelFormatException.class);  // Biff 3 / Excel 3, pre-OLE2
+        EXCLUDED.put("testEXCEL_4.xls", OldExcelFormatException.class);  // Biff 4 / Excel 4, pre-OLE2
+        EXCLUDED.put("testEXCEL_5.xls", OldExcelFormatException.class);  // Biff 5 / Excel 5
+        EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
+        EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
+        // EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
+        EXCLUDED.put("50833.xls", IllegalArgumentException.class);       // "Name is too long" when setting username
+        EXCLUDED.put("XRefCalc.xls", RuntimeException.class);            // "Buffer overrun"
     }
 
     @Override

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestEFBiffViewer.java Thu Jun 30 22:59:46 2016
@@ -20,26 +20,31 @@ import java.io.File;
 import java.io.IOException;
 import java.io.PrintStream;
 
+import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.hssf.OldExcelFormatException;
+import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.util.LocaleUtil;
+import org.junit.BeforeClass;
 
 public class TestEFBiffViewer extends BaseXLSIteratingTest {
-	static {
-		// these are likely ok to fail
-		EXCLUDED.add("XRefCalc.xls"); 
-		EXCLUDED.add("password.xls"); 
-		EXCLUDED.add("51832.xls"); 		// password
-		EXCLUDED.add("xor-encryption-abc.xls");    // password, ty again later!
-		EXCLUDED.add("43493.xls");	// HSSFWorkbook cannot open it as well
-		EXCLUDED.add("44958_1.xls");   // known bad file
-		EXCLUDED.add("46904.xls");     // Exception, too old
-		EXCLUDED.add("47251_1.xls");   // Broken test file
-        EXCLUDED.add("testEXCEL_3.xls");  // Biff 3 / Excel 3, pre-OLE2
-		EXCLUDED.add("testEXCEL_4.xls");   // old unsupported format
-		EXCLUDED.add("testEXCEL_5.xls");   // old unsupported format
-		EXCLUDED.add("testEXCEL_95.xls");   // old unsupported format
-		EXCLUDED.add("35897-type4.xls");   // unsupported encryption
-		EXCLUDED.add("59074.xls");	// Biff 5 / Excel 95
-	}
+    @BeforeClass
+    public static void setup() {
+        EXCLUDED.clear();
+        EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header 
+        EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
+        EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("password.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("46904.xls", OldExcelFormatException.class);
+        EXCLUDED.put("59074.xls", OldExcelFormatException.class);
+        EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class);  // Biff 2 / Excel 2, pre-OLE2
+        EXCLUDED.put("testEXCEL_3.xls", OldExcelFormatException.class);  // Biff 3 / Excel 3, pre-OLE2
+        EXCLUDED.put("testEXCEL_4.xls", OldExcelFormatException.class);  // Biff 4 / Excel 4, pre-OLE2
+        EXCLUDED.put("testEXCEL_5.xls", OldExcelFormatException.class);  // Biff 5 / Excel 5
+        EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
+        EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
+        EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
+        EXCLUDED.put("XRefCalc.xls", RuntimeException.class);            // "Buffer overrun"
+    }
 	
 	@Override
 	void runOneFile(File fileIn) throws IOException {

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestFormulaViewer.java Thu Jun 30 22:59:46 2016
@@ -16,30 +16,36 @@
 ==================================================================== */
 package org.apache.poi.hssf.dev;
 
+import static org.junit.Assume.assumeTrue;
+
 import java.io.File;
 import java.io.PrintStream;
 
+import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.hssf.OldExcelFormatException;
+import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.util.LocaleUtil;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.BeforeClass;
 
 public class TestFormulaViewer extends BaseXLSIteratingTest {
-	static {
-		// TODO: is it ok to fail these? 
-		// Look at the output of the test for the detailed stacktrace of the failures...
-//		EXCLUDED.add("WORKBOOK_in_capitals.xls"); 	
-//		EXCLUDED.add("NoGutsRecords.xls"); 
-//		EXCLUDED.add("BOOK_in_capitals.xls"); 
-//		EXCLUDED.add("46904.xls"); 
-//		EXCLUDED.add("OddStyleRecord.xls");		
-	}
+    @BeforeClass
+    public static void setup() {
+        EXCLUDED.clear();
+        EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header 
+        EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
+        EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("password.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("46904.xls", OldExcelFormatException.class);
+        EXCLUDED.put("59074.xls", OldExcelFormatException.class);
+        EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class);  // Biff 2 / Excel 2, pre-OLE2
+        EXCLUDED.put("testEXCEL_3.xls", OldExcelFormatException.class);  // Biff 3 / Excel 3, pre-OLE2
+        EXCLUDED.put("testEXCEL_4.xls", OldExcelFormatException.class);  // Biff 4 / Excel 4, pre-OLE2
+        EXCLUDED.put("testEXCEL_5.xls", OldExcelFormatException.class);  // Biff 5 / Excel 5
+        EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
+        EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
+        EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
+    }
 	
-	@Override
-	@Ignore("Not yet done, nearly all files fail with various errors, remove this method when done to use the one from the abstract base class!...")
-	@Test
-	public void testMain() throws Exception {
-	}
-
     @Override
 	void runOneFile(File fileIn) throws Exception {
 		PrintStream save = System.out;
@@ -51,6 +57,14 @@ public class TestFormulaViewer extends B
             viewer.setFile(fileIn.getAbsolutePath());
             viewer.setList(true);
             viewer.run();
+		} catch (RuntimeException re) {
+		    String m = re.getMessage();
+		    if (m.startsWith("toFormulaString") || m.startsWith("3D references")) {
+		        // TODO: fix those cases, but ignore them for now ...
+		        assumeTrue(true);
+		    } else {
+		        throw re;
+		    }
 		} finally {
 			System.setOut(save);
 		}

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestReSave.java Thu Jun 30 22:59:46 2016
@@ -23,19 +23,33 @@ import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.hssf.OldExcelFormatException;
+import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.util.LocaleUtil;
+import org.junit.BeforeClass;
 
 public class TestReSave extends BaseXLSIteratingTest {
-	static {
-		// these are likely ok to fail
-		EXCLUDED.add("password.xls"); 
-		EXCLUDED.add("43493.xls");	// HSSFWorkbook cannot open it as well
-		EXCLUDED.add("46904.xls"); 
-		EXCLUDED.add("51832.xls");	// password 
-        EXCLUDED.add("44958_1.xls");   // known bad file
-	}
-	
+    @BeforeClass
+    public static void setup() {
+        EXCLUDED.clear();
+        EXCLUDED.put("35897-type4.xls", EncryptedDocumentException.class); // unsupported crypto api header 
+        EXCLUDED.put("51832.xls", EncryptedDocumentException.class);
+        EXCLUDED.put("xor-encryption-abc.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("password.xls", EncryptedDocumentException.class); 
+        EXCLUDED.put("46904.xls", OldExcelFormatException.class);
+        EXCLUDED.put("59074.xls", OldExcelFormatException.class);
+        EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class);  // Biff 2 / Excel 2, pre-OLE2
+        EXCLUDED.put("testEXCEL_3.xls", OldExcelFormatException.class);  // Biff 3 / Excel 3, pre-OLE2
+        EXCLUDED.put("testEXCEL_4.xls", OldExcelFormatException.class);  // Biff 4 / Excel 4, pre-OLE2
+        EXCLUDED.put("testEXCEL_5.xls", OldExcelFormatException.class);  // Biff 5 / Excel 5
+        EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
+        EXCLUDED.put("43493.xls", RecordInputStream.LeftoverDataException.class);  // HSSFWorkbook cannot open it as well
+        EXCLUDED.put("44958_1.xls", RecordInputStream.LeftoverDataException.class);
+        EXCLUDED.put("XRefCalc.xls", RuntimeException.class);            // "Buffer overrun"
+    }
+
 	@Override
 	void runOneFile(File fileIn) throws Exception {
 		// avoid running on files leftover from previous failed runs
@@ -55,13 +69,8 @@ public class TestReSave extends BaseXLSI
 				// also try BiffViewer on the saved file
                 new TestBiffViewer().runOneFile(reSavedFile);
 
-    			try {
-        			// had one case where the re-saved could not be re-saved!
-        			ReSave.main(new String[] { reSavedFile.getAbsolutePath() });
-    			} finally {
-    				// clean up the re-re-saved file
-    			    new File(fileIn.getParentFile(), reSavedFile.getName().replace(".xls", "-saved.xls")).delete();
-    			}
+    			// had one case where the re-saved could not be re-saved!
+    			ReSave.main(new String[] { "-bos", reSavedFile.getAbsolutePath() });
 			} finally {
 				// clean up the re-saved file
 				reSavedFile.delete();

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java?rev=1750867&r1=1750866&r2=1750867&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestRecordLister.java Thu Jun 30 22:59:46 2016
@@ -20,18 +20,22 @@ import java.io.File;
 import java.io.IOException;
 import java.io.PrintStream;
 
+import org.apache.poi.hssf.OldExcelFormatException;
 import org.apache.poi.util.LocaleUtil;
+import org.junit.BeforeClass;
 
 public class TestRecordLister extends BaseXLSIteratingTest {
-	static {
-		// these are likely ok to fail
-		EXCLUDED.add("46904.xls"); 
-        EXCLUDED.add("testEXCEL_3.xls");  // Biff 3 / Excel 3, pre-OLE2
-        EXCLUDED.add("testEXCEL_4.xls");   // old unsupported format
-        EXCLUDED.add("testEXCEL_5.xls");  // Biff 5 / Excel 5
-        EXCLUDED.add("testEXCEL_95.xls"); // Biff 5 / Excel 95
-		EXCLUDED.add("59074.xls");	// Biff 5 / Excel 95
-	}
+    @BeforeClass
+    public static void setup() {
+        EXCLUDED.clear();
+        EXCLUDED.put("46904.xls", OldExcelFormatException.class);
+        EXCLUDED.put("59074.xls", OldExcelFormatException.class);
+        EXCLUDED.put("testEXCEL_2.xls", OldExcelFormatException.class);  // Biff 2 / Excel 2, pre-OLE2
+        EXCLUDED.put("testEXCEL_3.xls", OldExcelFormatException.class);  // Biff 3 / Excel 3, pre-OLE2
+        EXCLUDED.put("testEXCEL_4.xls", OldExcelFormatException.class);  // Biff 4 / Excel 4, pre-OLE2
+        EXCLUDED.put("testEXCEL_5.xls", OldExcelFormatException.class);  // Biff 5 / Excel 5
+        EXCLUDED.put("testEXCEL_95.xls", OldExcelFormatException.class); // Biff 5 / Excel 95
+    }
 	
 	@Override
 	void runOneFile(File fileIn) throws IOException {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org