You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by fg...@apache.org on 2006/09/03 16:31:42 UTC
svn commit: r439783 -
/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java
Author: fgiust
Date: Sun Sep 3 07:31:41 2006
New Revision: 439783
URL: http://svn.apache.org/viewvc?rev=439783&view=rev
Log:
see SUREFIRE-54
reverting the change that removed the System classloader during tests. This broke the TestNG support, we will have to reapply this patch when a solution for TestNG is found.
Modified:
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java
Modified: maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java?rev=439783&r1=439782&r2=439783&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java (original)
+++ maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java Sun Sep 3 07:31:41 2006
@@ -204,7 +204,7 @@
ClassLoader surefireClassLoader =
createClassLoader( surefireClassPathUrls, getClass().getClassLoader(), true );
- ClassLoader testsClassLoader = createClassLoader( classPathUrls, null, childDelegation, true );
+ ClassLoader testsClassLoader = getTestClassLoader( childDelegation );
Class surefireClass = surefireClassLoader.loadClass( Surefire.class.getName() );
@@ -247,7 +247,7 @@
{
// The test classloader must be constructed first to avoid issues with commons-logging until we properly
// separate the TestNG classloader
- ClassLoader testsClassLoader = createClassLoader( classPathUrls, null, childDelegation, true );
+ ClassLoader testsClassLoader = getTestClassLoader( childDelegation );
ClassLoader surefireClassLoader =
createClassLoader( surefireClassPathUrls, getClass().getClassLoader(), true );
@@ -294,7 +294,7 @@
ClassLoader surefireClassLoader;
try
{
- testsClassLoader = createClassLoader( classPathUrls, null, false, true );
+ testsClassLoader = getTestClassLoader( false );
// TODO: assertions = true shouldn't be required if we had proper separation (see TestNG)
surefireClassLoader = createClassLoader( surefireClassPathUrls, false, true );
}
@@ -552,6 +552,21 @@
}
return returnCode == 0;
+ }
+
+ /**
+ * This method actually calls <code>createClassLoader( classPathUrls, ClassLoader.getSystemClassLoader(),
+ * childDelegation, true );</code> and it's here to handle the use of a parent classloader consistently.
+ */
+ private ClassLoader getTestClassLoader( boolean childDelegation )
+ throws MalformedURLException
+ {
+ // warning, parent should probably be set to null, but at this moment this totally breaks TestNG
+ // Comment from Kenney:
+ // If this is not done, the System classloader is added, in this case an AppClassloader containing everything in
+ // the root classpath. For instance, in maven, everything in core/ is available.This can cause clashes with the
+ // plexus-utils used in maven itself.
+ return createClassLoader( classPathUrls, ClassLoader.getSystemClassLoader(), childDelegation, true );
}
private static ClassLoader createClassLoader( List classPathUrls, ClassLoader parent, boolean assertionsEnabled )