On Sat, 1 Oct 2005, Andy Glick wrote:

Hi Andy,

> I've been working on adding forking to the surefire plugin, really into the
> surefire package, in order to allow clover to work and to allow our
> implementation to offer features similar to those provided by the JUnit Ant
> task
>
> I've run into a number of problems:
>
> 1) on windows using both plexus.util.cli and runtime.exec I haven't been
> able to construct classpaths containing embedded spaces - my repo is
> located at c:\documents and settings\user\.m2\repository and so the 1st
> reference to a jar in the repo is causing the exec to fail - it doesn't
> matter if i wrap the classpath specification in double quotes or not
>
> does anybody have any experience setting classpath as an environment
> variable on runtime.exec()? if that would work it might  be a work around
> for setting classpath in the args list in CommandLine or runtime.exec()

The CommandLine should be fixed; can you file a JIRA?

How do you call runtime.exec? Afaik it should support separate arguments
which should be escaped properly. If not, that's a bug in the JDK. Maybe
you can escape the characters like "\"C:\Documents and Settings\...\"" ?

> 2) the Surefire class uses a custom classLoader IsolatedClassLoader, which
> lives in the surefire-booter subproject, In the method instantiateReports
> the interface org.codehaus.surefire.report.Reporter is used as a cast for
> the concrete implementation classes which implement the Reporter interface.
> They are explicitly loaded with the custom classloader and the cast is
> causing a ClassCastException because the Reporter class is declared in the
> Surefire class and it is being loaded by the application class loader.
> Since the classes are loaded by different ClassLoaders they are not
> related. This strange behavior is a function of Java's class loading
> strategy which actually creates sets of namespaces which are distinguished
> by class/classloader pairs.
>
> Given the previous explanation, does the following seem workable?  Using
> the classes ThreadedExecutor, ThreadFactory, FutureResult and Callable from
> Doug Lea's concurrency package construct a mechanism for Surefire so that
> it can run in a thread whose contextClassLoader is an IsolatedClassLoader
> and which can produce a result object or throw an exception.

Not sure if a workaround like this is needed - I'm not sure what you're
talking about, really :) Classworlds should be able to deal with this.

Can you file a JIRA and attach a test project that fails? Maybe we can
work something out in surefire itself, or perhaps maven2.
Did this bug occur after the fixes in maven-core that set the
contextClassloader correctly?

-- Kenney

> I'd appreciate feedback.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>

--
Kenney Westerhof
http://www.neonics.com
GPG public key: http://www.gods.nl/~forge/kenneyw.key

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to