Author: kenney Date: Tue Jun 5 10:41:53 2007 New Revision: 544574 URL: http://svn.apache.org/viewvc?view=rev&rev=544574 Log: Merge revision 544570 from trunk - fix useSystemClassLoader
Modified: maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkConfiguration.java maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java Modified: maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkConfiguration.java URL: http://svn.apache.org/viewvc/maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkConfiguration.java?view=diff&rev=544574&r1=544573&r2=544574 ============================================================================== --- maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkConfiguration.java (original) +++ maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/ForkConfiguration.java Tue Jun 5 10:41:53 2007 @@ -91,12 +91,12 @@ public void setUseSystemClassLoader( boolean useSystemClassLoader ) { - useSystemClassLoader= useSystemClassLoader; + this.useSystemClassLoader = useSystemClassLoader; } public boolean isUseSystemClassLoader() { - return useSystemClassLoader && isForking(); + return useSystemClassLoader; } public void setSystemProperties( Properties systemProperties ) Modified: maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java URL: http://svn.apache.org/viewvc/maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java?view=diff&rev=544574&r1=544573&r2=544574 ============================================================================== --- maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java (original) +++ maven/surefire/branches/surefire-2.3.x/surefire-booter/src/main/java/org/apache/maven/surefire/booter/SurefireBooter.java Tue Jun 5 10:41:53 2007 @@ -90,6 +90,12 @@ private File reportsDirectory; + /** + * This field is set to true if it's running from main. + * It's used to help decide what classloader to use. + */ + private final boolean isForked; + static { try @@ -103,6 +109,16 @@ } } + public SurefireBooter() + { + isForked = false; + } + + private SurefireBooter( boolean isForked ) + { + this.isForked = isForked; + } + // ---------------------------------------------------------------------- // Accessors // ---------------------------------------------------------------------- @@ -219,7 +235,7 @@ ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader(); try { - ClassLoader testsClassLoader = forkConfiguration.isUseSystemClassLoader() ? ClassLoader.getSystemClassLoader() + ClassLoader testsClassLoader = useSystemClassLoader() ? ClassLoader.getSystemClassLoader() : createClassLoader( classPathUrls, null, childDelegation, true ); // TODO: assertions = true shouldn't be required for this CL if we had proper separation (see TestNG) @@ -266,7 +282,7 @@ // The test classloader must be constructed first to avoid issues with commons-logging until we properly // separate the TestNG classloader ClassLoader testsClassLoader = - forkConfiguration.isUseSystemClassLoader() ? getClass().getClassLoader()//ClassLoader.getSystemClassLoader() + useSystemClassLoader() ? getClass().getClassLoader() // ClassLoader.getSystemClassLoader() : createClassLoader( classPathUrls, null, childDelegation, true ); ClassLoader surefireClassLoader = createClassLoader( surefireClassPathUrls, testsClassLoader, true ); @@ -421,7 +437,7 @@ addPropertiesForTypeHolder( reports, properties, "report." ); addPropertiesForTypeHolder( testSuites, properties, "testSuite." ); - for ( int i = 0; i < classPathUrls.size() && !forkConfiguration.isUseSystemClassLoader(); i++ ) + for ( int i = 0; i < classPathUrls.size() && useSystemClassLoader(); i++ ) { String url = (String) classPathUrls.get( i ); properties.setProperty( "classPathUrl." + i, url ); @@ -434,7 +450,7 @@ } properties.setProperty( "childDelegation", String.valueOf( childDelegation ) ); - properties.setProperty( "useSystemClassLoader", String.valueOf( forkConfiguration.isUseSystemClassLoader() ) ); + properties.setProperty( "useSystemClassLoader", String.valueOf( useSystemClassLoader() ) ); } private File writePropertiesFile( String name, Properties properties ) @@ -494,6 +510,12 @@ } } + private final boolean useSystemClassLoader() + { + return forkConfiguration.isUseSystemClassLoader() && + ( isForked || forkConfiguration.isForking() ); + } + private boolean fork( Properties properties, boolean showHeading, boolean showFooter ) throws SurefireBooterForkException { @@ -516,12 +538,12 @@ bootClasspath.addAll( surefireBootClassPathUrls ); - if ( forkConfiguration.isUseSystemClassLoader() ) + if ( useSystemClassLoader() ) { bootClasspath.addAll( classPathUrls ); } - Commandline cli = forkConfiguration.createCommandLine( bootClasspath, forkConfiguration.isUseSystemClassLoader() ); + Commandline cli = forkConfiguration.createCommandLine( bootClasspath, useSystemClassLoader() ); cli.createArgument().setFile( surefireProperties ); @@ -754,7 +776,7 @@ File surefirePropertiesFile = new File( args[0] ); Properties p = loadProperties( surefirePropertiesFile ); - SurefireBooter surefireBooter = new SurefireBooter(); + SurefireBooter surefireBooter = new SurefireBooter( true ); ForkConfiguration forkConfiguration = new ForkConfiguration(); forkConfiguration.setForkMode( "never" ); @@ -857,5 +879,4 @@ return new ForkingStreamConsumer( outputConsumer ); } } -