Tests fail if in path with spaces --------------------------------- Key: SUREFIRE-307 URL: http://jira.codehaus.org/browse/SUREFIRE-307 Project: Maven Surefire Issue Type: Bug Components: classloading, TestNG support Affects Versions: 2.3 Environment: Windows XP Maven 2.0.5 Java 1.6.0 Reporter: Wim Deblauwe
I use TestNG with Surefire. My build fails if my project is in a path with spaces, because my tests fail. In my tests I have the following code: new File( getClass().getResource( "sample-java-utils-log.xml" ).toURI() ) This results in the following error: java.net.URISyntaxException: Illegal character in path at index 18: file:/C:/Documents and Settings/wdb/.hudson/jobs/Vigilog/workspace/trunk/target/test-classes/net/sourceforge/vigilog/parse/sample- java-utils-log.xml at java.net.URI$Parser.fail(Unknown Source) at java.net.URI$Parser.checkChars(Unknown Source) at java.net.URI$Parser.parseHierarchical(Unknown Source) at java.net.URI$Parser.parse (Unknown Source) at java.net.URI.<init>(Unknown Source) at java.net.URL.toURI(Unknown Source) at net.sourceforge.vigilog.parse.JavaLoggingXMLFileLogFileParserTest.testParse(JavaLoggingXMLFileLogFileParserTest.java :38) If I put my project in a path without spaces, I don't have this problem (I noticed this problem, because I tried Hudson build server and it checks the project out to my home directory) According to Jesse Glick from the Hudson mailing list, the problem is due to the following fact (full thread: http://www.nabble.com/Build-fails-under-hudson-due-to-TestNG-unit-tests-tf3354110.html): Wim Deblauwe wrote: > If it is any help, this is the source code of IsolatedClassLoader: > http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/booter/IsolatedClassLoader.java?view=markup It sure does help, because this class is probably to blame for your problem: http://svn.apache.org/repos/asf/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java Note the call to File.toURL(), deprecated as of JDK 6 because $ jrunscript js> println(new java.io.File("/tmp/foo and bar/baz").toURI().toURL()) file:/tmp/foo%20and%20bar/baz js> println(new java.io.File("/tmp/foo and bar/baz").toURL()) file:/tmp/foo and bar/baz js> println(new java.io.File("/tmp/foo and bar/baz").toURL().toURI()) script error: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.net.URISyntaxException: Illegal character in path at index 13: file:/tmp/foo and bar/baz (<STDIN>#1) in <STDIN> at line number 1 js> If you want to reproduce this, check out my open source project to a directory with spaces from: https://vigilog.svn.sourceforge.net/svnroot/vigilog/trunk and run 'mvn test'. -- 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