bodewig 2004/07/27 07:24:57 Modified: src/testcases/org/apache/tools/ant AntClassLoaderTest.java Added: src/testcases/org/apache/tools/ant AntClassLoaderDelegationTest.java Log: new tests fail if the tests themselves live on the system classloader Revision Changes Path 1.9 +0 -52 ant/src/testcases/org/apache/tools/ant/AntClassLoaderTest.java Index: AntClassLoaderTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/AntClassLoaderTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- AntClassLoaderTest.java 27 Jul 2004 07:02:06 -0000 1.8 +++ AntClassLoaderTest.java 27 Jul 2004 14:24:57 -0000 1.9 @@ -82,56 +82,4 @@ fail("loader should not fail even if project finished"); } } - - /** Sample resource present in build/testcases/ */ - private static final String TEST_RESOURCE = "org/apache/tools/ant/IncludeTest.class"; - - public void testFindResources() throws Exception { - //System.err.println("loading from: " + AntClassLoader.class.getProtectionDomain().getCodeSource().getLocation()); - // See bug #30161. - // This path should contain the class files for these testcases: - String buildTestcases = System.getProperty("build.tests"); - assertNotNull("defined ${build.tests}", buildTestcases); - assertTrue("have a dir " + buildTestcases, new File(buildTestcases).isDirectory()); - Path path = new Path(p, buildTestcases); - // A special parent loader which is not the system class loader: - ClassLoader parent = new ParentLoader(); - // An AntClassLoader which is supposed to delegate to the parent and then to the disk path: - ClassLoader acl = new AntClassLoader(parent, p, path, true); - // The intended result URLs: - URL urlFromPath = new URL(FileUtils.newFileUtils().toURI(buildTestcases) + TEST_RESOURCE); - URL urlFromParent = new URL("http://ant.apache.org/" + TEST_RESOURCE); - assertEquals("correct resources (regular delegation order)", - Arrays.asList(new URL[] {urlFromParent, urlFromPath}), - enum2List(acl.getResources(TEST_RESOURCE))); - acl = new AntClassLoader(parent, p, path, false); - assertEquals("correct resources (reverse delegation order)", - Arrays.asList(new URL[] {urlFromPath, urlFromParent}), - enum2List(acl.getResources(TEST_RESOURCE))); - } - - private static List enum2List(Enumeration e) { - // JDK 1.4: return Collections.list(e); - List l = new ArrayList(); - while (e.hasMoreElements()) { - l.add(e.nextElement()); - } - return l; - } - - /** Special loader that just knows how to find TEST_RESOURCE. */ - private static final class ParentLoader extends ClassLoader { - - public ParentLoader() {} - - protected Enumeration findResources(String name) throws IOException { - if (name.equals(TEST_RESOURCE)) { - return Collections.enumeration(Collections.singleton(new URL("http://ant.apache.org/" + name))); - } else { - return Collections.enumeration(Collections.EMPTY_SET); - } - } - - } - } 1.1 ant/src/testcases/org/apache/tools/ant/AntClassLoaderDelegationTest.java Index: AntClassLoaderDelegationTest.java =================================================================== /* * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.tools.ant; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.List; import junit.framework.TestCase; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.util.FileUtils; /** * Test case for ant class loader * */ public class AntClassLoaderDelegationTest extends TestCase { private Project p; public AntClassLoaderDelegationTest(String name) { super(name); } public void setUp() { p = new Project(); p.init(); } /** Sample resource present in build/testcases/ */ private static final String TEST_RESOURCE = "org/apache/tools/ant/IncludeTest.class"; public void testFindResources() throws Exception { //System.err.println("loading from: " + AntClassLoader.class.getProtectionDomain().getCodeSource().getLocation()); // See bug #30161. // This path should contain the class files for these testcases: String buildTestcases = System.getProperty("build.tests"); assertNotNull("defined ${build.tests}", buildTestcases); assertTrue("have a dir " + buildTestcases, new File(buildTestcases).isDirectory()); Path path = new Path(p, buildTestcases); // A special parent loader which is not the system class loader: ClassLoader parent = new ParentLoader(); // An AntClassLoader which is supposed to delegate to the parent and then to the disk path: ClassLoader acl = new AntClassLoader(parent, p, path, true); // The intended result URLs: URL urlFromPath = new URL(FileUtils.newFileUtils().toURI(buildTestcases) + TEST_RESOURCE); URL urlFromParent = new URL("http://ant.apache.org/" + TEST_RESOURCE); assertEquals("correct resources (regular delegation order)", Arrays.asList(new URL[] {urlFromParent, urlFromPath}), enum2List(acl.getResources(TEST_RESOURCE))); acl = new AntClassLoader(parent, p, path, false); assertEquals("correct resources (reverse delegation order)", Arrays.asList(new URL[] {urlFromPath, urlFromParent}), enum2List(acl.getResources(TEST_RESOURCE))); } private static List enum2List(Enumeration e) { // JDK 1.4: return Collections.list(e); List l = new ArrayList(); while (e.hasMoreElements()) { l.add(e.nextElement()); } return l; } /** Special loader that just knows how to find TEST_RESOURCE. */ private static final class ParentLoader extends ClassLoader { public ParentLoader() {} protected Enumeration findResources(String name) throws IOException { if (name.equals(TEST_RESOURCE)) { return Collections.enumeration(Collections.singleton(new URL("http://ant.apache.org/" + name))); } else { return Collections.enumeration(Collections.EMPTY_SET); } } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]