From d5951da110c53e64d81d292a27b772d041c832a2 Mon Sep 17 00:00:00 2001 From: Simon Kitching Date: Wed, 2 Aug 2006 00:18:56 +0000 Subject: [PATCH] Make test compatible with maven2 surefire. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@427814 13f79535-47bb-0310-9956-ffa450edef68 --- .../logging/pathable/ParentFirstTestCase.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/test/org/apache/commons/logging/pathable/ParentFirstTestCase.java b/src/test/org/apache/commons/logging/pathable/ParentFirstTestCase.java index feae3a7..aeee3b5 100644 --- a/src/test/org/apache/commons/logging/pathable/ParentFirstTestCase.java +++ b/src/test/org/apache/commons/logging/pathable/ParentFirstTestCase.java @@ -20,6 +20,8 @@ import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; +import java.util.HashSet; +import java.util.Set; import junit.framework.Test; import junit.framework.TestCase; @@ -85,6 +87,21 @@ public class ParentFirstTestCase extends TestCase { return new PathableTestSuite(testClass, context); } + /** + * Utility method to return the set of all classloaders in the + * parent chain starting from the one that loaded the class for + * this object instance. + */ + private Set getAncestorCLs() { + Set s = new HashSet(); + ClassLoader cl = this.getClass().getClassLoader(); + while (cl != null) { + s.add(cl); + cl = cl.getParent(); + } + return s; + } + /** * Test that the classloader hierarchy is as expected, and that * calling loadClass() on various classloaders works as expected. @@ -130,11 +147,13 @@ public class ParentFirstTestCase extends TestCase { PathableClassLoader.class.getName().equals( systemLoader.getClass().getName())); - // junit classes should be visible; their classloader is system. - // this will of course throw an exception if not found. + // junit classes should be visible; their classloader is not + // in the hierarchy of parent classloaders for this class, + // though it is accessable due to trickery in the PathableClassLoader. Class junitTest = contextLoader.loadClass("junit.framework.Test"); - assertSame("Junit not loaded via systemloader", - systemLoader, junitTest.getClassLoader()); + Set ancestorCLs = getAncestorCLs(); + assertFalse("Junit not loaded by ancestor classloader", + ancestorCLs.contains(junitTest.getClassLoader())); // jcl api classes should be visible only via the parent Class logClass = contextLoader.loadClass("org.apache.commons.logging.Log");