[jira] Commented: (SUREFIRE-116) [regression] Test-resources not on classpath in forkMode always

2007-05-18 Thread Jonathon Golden (JIRA)

[ 
http://jira.codehaus.org/browse/SUREFIRE-116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_96330
 ] 

Jonathon Golden commented on SUREFIRE-116:
--

Hi,

I tried applying Will's patch to the 2.3.1 code base and it did not solve this 
problem for me, however if I run my tests with Junit4 this class loader bug  
goes away. Perhaps the solution to the bug in the Junit3 provider can be found 
in the code for the Junit4 provider?

> [regression] Test-resources not on classpath in forkMode always
> ---
>
> Key: SUREFIRE-116
> URL: http://jira.codehaus.org/browse/SUREFIRE-116
> Project: Maven Surefire
>  Issue Type: Bug
>Affects Versions: 2.0 (2.2 plugin)
>Reporter: Geoffrey De Smet
> Fix For: 2.4
>
> Attachments: JUnitTestSet.patch
>
>
> Before surefire plugin 2.2 at spring-richclient:
> -  our build succeeded
> - ValidationResultsTests worked
> - true due to an unrelated testcase: 
> HandlerTest 
> - pertest
> Since 2.2:
> - our build failes
> - ValidtorResultTests failed too
> - while it's still true (how can it 
> fail in that case?)
> - pertest or always (same result)
> The entire discussion (with stacktraces etc) on the user list is here:
> http://article.gmane.org/gmane.comp.jakarta.turbine.maven.user/45131

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] Commented: (SUREFIRE-116) [regression] Test-resources not on classpath in forkMode always

2007-01-29 Thread Will Currie (JIRA)

[ 
http://jira.codehaus.org/browse/SUREFIRE-116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_86270
 ] 

Will Currie commented on SUREFIRE-116:
--

I needed to get the forkMode=always option to work with a Junit TestCase that 
has a suite() method. It appeared that JUnitTestSet was not setting the 
classloader properly when it was building up the list of things to fork. I was 
getting the following when trying to run MyTest (foo.properties was in 
target/test-classes):

Caused by: org.apache.maven.surefire.booter.SurefireBooterForkException: 
foo.MyTest; nested exception is java.io.FileNotFoundException: class path 
resource [foo.properties] cannot be opened because it does not exist; nested 
exception is org.apache.maven.surefire.testset.TestSetFailedException: 
foo.MyTest; nested exception is java.io.FileNotFoundException: class path 
resource [foo.properties] cannot be opened because it does not exist
at 
org.apache.maven.surefire.booter.SurefireBooter.getTestSets(SurefireBooter.java:398)
at 
org.apache.maven.surefire.booter.SurefireBooter.runSuitesForkPerTestSet(SurefireBooter.java:337)
at 
org.apache.maven.surefire.booter.SurefireBooter.run(SurefireBooter.java:201)
at 
org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugin.java:398)
... 18 more
Caused by: org.apache.maven.surefire.testset.TestSetFailedException: 
foo.MyTest; nested exception is java.io.FileNotFoundException: class path 
resource [foo.properties] cannot be opened because it does not exist
at 
org.apache.maven.surefire.junit.JUnitTestSet.getTestCount(JUnitTestSet.java:260)
at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.locateTestSets(AbstractDirectoryTestSuite.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at 
org.apache.maven.surefire.booter.SurefireBooter.getTestSets(SurefireBooter.java:386)
... 21 more
Caused by: java.io.FileNotFoundException: class path resource [foo.properties] 
cannot be opened because it does not exist
at 
org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:135)
at foo.MyTest.suite(MyTest.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at 
org.apache.maven.surefire.junit.JUnitTestSet.createInstanceFromSuiteMethod(JUnitTestSet.java:177)
 
at 
org.apache.maven.surefire.junit.JUnitTestSet.constructTestObject(JUnitTestSet.java:137)
 
at 
org.apache.maven.surefire.junit.JUnitTestSet.getTestCount(JUnitTestSet.java:244)
... 27 more

I made the following to change to JUnitTestSet in the 2.3-SNAPSHOT and the 
problem appears solved:

--- 
surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
   (revision 498497)
+++ 
surefire-providers/surefire-junit/src/main/java/org/apache/maven/surefire/junit/JUnitTestSet.java
   (working copy)
@@ -174,7 +174,14 @@
 
 if ( Modifier.isPublic( suiteMethod.getModifiers() ) && 
Modifier.isStatic( suiteMethod.getModifiers() ) )
 {
-testObject = suiteMethod.invoke( null, EMPTY_CLASS_ARRAY );
+ClassLoader previousLoader = 
Thread.currentThread().getContextClassLoader();
+try {
+Thread.currentThread().setContextClassLoader( 
testClass.getClassLoader() );
+
+testObject = suiteMethod.invoke( null, EMPTY_CLASS_ARRAY );
+} finally {
+Thread.currentThread().setContextClassLoader( 
previousLoader );
+}
 }
 }
 catch ( NoSuchMethodException e )

How do I go about submitting this as a patch?

> [regression] Test-resources not on classpath in forkMode always
> ---
>
> Key: SUREFIRE-116
> URL: http://jira.codehaus.org/browse/SUREFIRE-116
> Project: Maven Surefire
>  Issue Type: Bug
>Affects Versions: 2.0 (2.2 plugin)
>Reporter: Geoffrey De Smet
> Fix For: 2.3
>
>
> Before surefire plugin 2.2 at spring-richclient:
> -  our build succeeded
> - ValidationResultsTests worked
> - true due to an unrelated testcase: 
> HandlerTest 
> - pertest
> Since 2.2:
> - our build failes
> - ValidtorResultTests failed too
> - while