[ http://jira.codehaus.org/browse/MSUREFIRE-91?page=comments#action_63526 ] 

Matthew Wheaton commented on MSUREFIRE-91:
------------------------------------------

The original task for this was http://jira.codehaus.org/browse/MSUREFIRE-16 
which was deemed a duplicate issue.
I do not believe it is. I have the exact same problem as the original reporter. 
Standalone ANT/Junit with fork ON works just fine. Inside surefire it FAILS.
This means that surefire is NOT promoting the JAR contents to the boot 
classpath where CharsetProviders are resolved.
The same unit test works fine in Eclipse, as Eclipse essentially forks a new 
process to run as well.
Running under surefire/maven even with the fork option turned on in surefire 
still results in a failure.

> maven-surefire-plugin cannot test custom charset providers specified in 
> META-INF/services/java.nio.charset.spi.CharsetProvider
> ------------------------------------------------------------------------------------------------------------------------------
>
>          Key: MSUREFIRE-91
>          URL: http://jira.codehaus.org/browse/MSUREFIRE-91
>      Project: Maven 2.x Surefire Plugin
>         Type: Bug

>  Environment: All
>     Reporter: Matthew Wheaton
>     Assignee: Brett Porter
>     Priority: Blocker

>
>
> maven-surefire-plugin cannot run a jUnit test for a custom charset provider 
> specified in the jar file's 
> META-INF/services/java.nio.charset.spi.CharsetProvider file. Class 
> java.nio.charset.Charset performs a lookup using 
> ClassLoader.getSystemClassLoader(); which does not have the jar file in its 
> classpath and thus fails with e.g. junit.framework.AssertionFailedError: 
> java.io.UnsupportedEncodingException: DIN_66003 although the jar file itself 
> is correct. I think this is due to the plugin using its own classloader and 
> the JDK using the system classloader but I may be totally wrong and 
> everything is fine with the plugin.
> The method from java.nio.charset.Charset performing the lookup beings with
> private static Iterator providers() {
>       return new Iterator() {
>               Class c = java.nio.charset.spi.CharsetProvider.class;
>               ClassLoader cl = ClassLoader.getSystemClassLoader();
>               Iterator i = Service.providers(c, cl);
>               Object next = null;
> As it seems org.codehaus.surefire.SurefireBooter does not promote the jar 
> files to the classpath of the system classloader.

-- 
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

Reply via email to