You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2004/07/27 16:24:57 UTC
cvs commit: ant/src/testcases/org/apache/tools/ant AntClassLoaderDelegationTest.java AntClassLoaderTest.java
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: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org