You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2015/05/11 16:58:43 UTC

svn commit: r1678764 - /poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java

Author: nick
Date: Mon May 11 14:58:43 2015
New Revision: 1678764

URL: http://svn.apache.org/r1678764
Log:
Add a (disabled) failing unit test on heavily nested NPOIFS copies, found working on #56791

Modified:
    poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java?rev=1678764&r1=1678763&r2=1678764&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java Mon May 11 14:58:43 2015
@@ -17,6 +17,9 @@
 
 package org.apache.poi.poifs.filesystem;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -30,6 +33,7 @@ import org.apache.poi.POIDataSamples;
  */
 public final class TestFileSystemBugs extends TestCase {
     protected static POIDataSamples _samples = POIDataSamples.getPOIFSInstance();
+    protected static POIDataSamples _ssSamples = POIDataSamples.getSpreadSheetInstance();
     
     protected List<NPOIFSFileSystem> openedFSs;
     protected void tearDown() throws Exception {
@@ -45,15 +49,25 @@ public final class TestFileSystemBugs ex
         openedFSs = null;
     }
     protected DirectoryNode[] openSample(String name, boolean oldFails) throws Exception {
-        NPOIFSFileSystem nfs = new NPOIFSFileSystem(
-                _samples.openResourceAsStream(name));
+        return openSamples(new InputStream[] {
+                _samples.openResourceAsStream(name),
+                _samples.openResourceAsStream(name)
+        }, oldFails);
+    }
+    protected DirectoryNode[] openSSSample(String name, boolean oldFails) throws Exception {
+        return openSamples(new InputStream[] {
+                _ssSamples.openResourceAsStream(name),
+                _ssSamples.openResourceAsStream(name)
+        }, oldFails);
+    }
+    protected DirectoryNode[] openSamples(InputStream[] inps, boolean oldFails) throws Exception {
+        NPOIFSFileSystem nfs = new NPOIFSFileSystem(inps[0]);
         if (openedFSs == null) openedFSs = new ArrayList<NPOIFSFileSystem>();
         openedFSs.add(nfs);
         
         POIFSFileSystem ofs = null;
         try {
-            ofs = new POIFSFileSystem(
-                _samples.openResourceAsStream(name));
+            ofs = new POIFSFileSystem(inps[1]);
             if (oldFails) fail("POIFSFileSystem should have failed but didn't");
         } catch (Exception e) {
             if (!oldFails) throw e;
@@ -107,4 +121,36 @@ public final class TestFileSystemBugs ex
             assertEquals(42, root.getEntryCount());
         }
     }
+    
+    /**
+     * With heavily nested documents, ensure we still re-write the same
+     */
+    public void IGNOREDtestHeavilyNestedReWrite() throws Exception {
+        for (DirectoryNode root : openSSSample("ex42570-20305.xls", false)) {
+            // TODO Record the structure
+            
+            // Prepare to copy
+            DirectoryNode dest;
+            if (root.getNFileSystem() != null) {
+                dest = (new NPOIFSFileSystem()).getRoot();
+            } else {
+                dest = (new OPOIFSFileSystem()).getRoot();
+            }
+            
+            // Copy over
+            EntryUtils.copyNodes(root, dest);
+            
+            // Re-load, always as NPOIFS
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            if (root.getNFileSystem() != null) {
+                root.getNFileSystem().writeFilesystem(baos);
+            } else {
+                root.getOFileSystem().writeFilesystem(baos);
+            }
+            NPOIFSFileSystem read = new NPOIFSFileSystem(
+                    new ByteArrayInputStream(baos.toByteArray()));
+            
+            // TODO Check the structure matches
+        }
+    }
 }



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