Author: markt
Date: Fri Sep 14 15:28:43 2012
New Revision: 1384821

URL: http://svn.apache.org/viewvc?rev=1384821&view=rev
Log:
More unit test reafctoring, more Jar resource handling bugs

Modified:
    
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResourceSet.java
    
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSet.java
    
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java
    
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSet.java
    
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSetMount.java

Modified: 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResourceSet.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResourceSet.java?rev=1384821&r1=1384820&r2=1384821&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResourceSet.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/JarResourceSet.java
 Fri Sep 14 15:28:43 2012
@@ -170,13 +170,26 @@ public class JarResourceSet extends Abst
         if (path.startsWith(webAppMount)) {
             String pathInJar =
                     internalPath + path.substring(webAppMount.length());
+            // Always strip off the leading '/' to get the JAR path and make
+            // sure it ends in '/'
+            if (pathInJar.charAt(pathInJar.length() - 1) == '/') {
+                pathInJar = pathInJar.substring(1);
+            } else {
+                pathInJar = pathInJar.substring(1) + '/';
+            }
             Enumeration<JarEntry> entries = base.entries();
             while (entries.hasMoreElements()) {
                 JarEntry entry = entries.nextElement();
                 String name = entry.getName();
-                if (name.startsWith(pathInJar)) {
-                    result.add(webAppMount +
-                            name.substring(internalPath.length()));
+                if (name.length() > pathInJar.length() &&
+                        name.startsWith(pathInJar)) {
+                    int nextSlash = name.indexOf('/', pathInJar.length());
+                    if (nextSlash == -1 || nextSlash == name.length() - 1) {
+                        if (name.startsWith(pathInJar)) {
+                            result.add(webAppMount + '/' +
+                                    name.substring(internalPath.length()));
+                        }
+                    }
                 }
             }
         }

Modified: 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSet.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSet.java?rev=1384821&r1=1384820&r2=1384821&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSet.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSet.java
 Fri Sep 14 15:28:43 2012
@@ -138,4 +138,61 @@ public abstract class AbstractTestResour
         Assert.assertNotNull(results);
         Assert.assertEquals(0, results.length);
     }
+
+    //-------------------------------------------------------- 
listWebAppPaths()
+
+    @Test(expected = IllegalArgumentException.class)
+    public final void testListWebAppPathsEmpty() {
+        resourceSet.listWebAppPaths("");
+    }
+
+    @Test
+    public final void testListWebAppPathsRoot() {
+        Set<String> results = resourceSet.listWebAppPaths(getMount() + "/");
+
+        Set<String> expected = new HashSet<>();
+        expected.add(getMount() + "/d1/");
+        expected.add(getMount() + "/d2/");
+        expected.add(getMount() + "/f1.txt");
+        expected.add(getMount() + "/f2.txt");
+
+        for (String result : results) {
+            Assert.assertTrue(result, expected.remove(result));
+        }
+        Assert.assertEquals(0, expected.size());
+    }
+
+    @Test
+    public final void testListWebAppPathsDirA() {
+        Set<String> results = resourceSet.listWebAppPaths(getMount() + "/d1");
+
+        Set<String> expected = new HashSet<>();
+        expected.add(getMount() + "/d1/d1-f1.txt");
+
+        for (String result : results) {
+            Assert.assertTrue(result, expected.remove(result));
+        }
+        Assert.assertEquals(0, expected.size());
+    }
+
+    @Test
+    public final void testListWebAppPathsDirB() {
+        Set<String> results = resourceSet.listWebAppPaths(getMount() + "/d1/");
+
+        Set<String> expected = new HashSet<>();
+        expected.add(getMount() + "/d1/d1-f1.txt");
+
+        for (String result : results) {
+            Assert.assertTrue(result, expected.remove(result));
+        }
+        Assert.assertEquals(0, expected.size());
+    }
+
+    @Test
+    public final void testListWebAppPathsFile() {
+        Set<String> results =
+                resourceSet.listWebAppPaths(getMount() + "/d1/d1-f1.txt");
+
+        Assert.assertEquals(0, results.size());
+    }
 }

Modified: 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java?rev=1384821&r1=1384820&r2=1384821&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/AbstractTestResourceSetMount.java
 Fri Sep 14 15:28:43 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.catalina.webresources;
 
+import java.util.Set;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -42,4 +44,11 @@ public abstract class AbstractTestResour
         Assert.assertNotNull(results);
         Assert.assertEquals(0, results.length);
     }
+
+    @Test
+    public final void testListWebAppPathsAbove() {
+        Set<String> results = resourceSet.listWebAppPaths("/");
+
+        Assert.assertEquals(0, results.size());
+    }
 }

Modified: 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSet.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSet.java?rev=1384821&r1=1384820&r2=1384821&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSet.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSet.java
 Fri Sep 14 15:28:43 2012
@@ -19,8 +19,6 @@ package org.apache.catalina.webresources
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Set;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -36,60 +34,6 @@ public class TestDirResourceSet extends 
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testListWebAppPathsEmpty() {
-        resourceSet.listWebAppPaths("");
-    }
-
-    @Test
-    public void testListWebAppPathsRoot() {
-        Set<String> results = resourceSet.listWebAppPaths("/");
-
-        Set<String> expected = new HashSet<>();
-        expected.add("/d1/");
-        expected.add("/d2/");
-        expected.add("/f1.txt");
-        expected.add("/f2.txt");
-
-        for (String result : results) {
-            Assert.assertTrue(result, expected.remove(result));
-        }
-        Assert.assertEquals(0, expected.size());
-    }
-
-    @Test
-    public void testListWebAppPathsDirA() {
-        Set<String> results = resourceSet.listWebAppPaths("/d1");
-
-        Set<String> expected = new HashSet<>();
-        expected.add("/d1/d1-f1.txt");
-
-        for (String result : results) {
-            Assert.assertTrue(result, expected.remove(result));
-        }
-        Assert.assertEquals(0, expected.size());
-    }
-
-    @Test
-    public void testListWebAppPathsDirB() {
-        Set<String> results = resourceSet.listWebAppPaths("/d1/");
-
-        Set<String> expected = new HashSet<>();
-        expected.add("/d1/d1-f1.txt");
-
-        for (String result : results) {
-            Assert.assertTrue(result, expected.remove(result));
-        }
-        Assert.assertEquals(0, expected.size());
-    }
-
-    @Test
-    public void testListWebAppPathsFile() {
-        Set<String> results = resourceSet.listWebAppPaths("/d1/d1-f1.txt");
-
-        Assert.assertEquals(0, results.size());
-    }
-
-    @Test(expected = IllegalArgumentException.class)
     public void testMkdirEmpty() {
         resourceSet.mkdir("");
     }

Modified: 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSetMount.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSetMount.java?rev=1384821&r1=1384820&r2=1384821&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSetMount.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TestDirResourceSetMount.java
 Fri Sep 14 15:28:43 2012
@@ -19,8 +19,6 @@ package org.apache.catalina.webresources
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Set;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -36,68 +34,6 @@ public class TestDirResourceSetMount ext
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testListWebAppPathsEmpty() {
-        resourceSet.listWebAppPaths("");
-    }
-
-    @Test
-    public void testListWebAppPathsAbove() {
-        Set<String> results = resourceSet.listWebAppPaths("/");
-
-        Assert.assertEquals(0, results.size());
-    }
-
-    @Test
-    public void testListWebAppPathsRoot() {
-        Set<String> results = resourceSet.listWebAppPaths("/mount");
-
-        Set<String> expected = new HashSet<>();
-        expected.add("/mount/d1/");
-        expected.add("/mount/d2/");
-        expected.add("/mount/f1.txt");
-        expected.add("/mount/f2.txt");
-
-        for (String result : results) {
-            Assert.assertTrue(result, expected.remove(result));
-        }
-        Assert.assertEquals(0, expected.size());
-    }
-
-    @Test
-    public void testListWebAppPathsDirA() {
-        Set<String> results = resourceSet.listWebAppPaths("/mount/d1");
-
-        Set<String> expected = new HashSet<>();
-        expected.add("/mount/d1/d1-f1.txt");
-
-        for (String result : results) {
-            Assert.assertTrue(result, expected.remove(result));
-        }
-        Assert.assertEquals(0, expected.size());
-    }
-
-    @Test
-    public void testListWebAppPathsDirB() {
-        Set<String> results = resourceSet.listWebAppPaths("/mount/d1/");
-
-        Set<String> expected = new HashSet<>();
-        expected.add("/mount/d1/d1-f1.txt");
-
-        for (String result : results) {
-            Assert.assertTrue(result, expected.remove(result));
-        }
-        Assert.assertEquals(0, expected.size());
-    }
-
-    @Test
-    public void testListWebAppPathsFile() {
-        Set<String> results =
-                resourceSet.listWebAppPaths("/mount/d1/d1-f1.txt");
-
-        Assert.assertEquals(0, results.size());
-    }
-
-    @Test(expected = IllegalArgumentException.class)
     public void testMkdirEmpty() {
         resourceSet.mkdir("");
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to