I notice a test error when my sources are loacted in a subdirectory of a directory containing a space. I fixed the unit-test that is now working, but I'm actuallu not sure that there is no bug into the code in such a case. Can you have a look?
Also, I copied a method taken from Wicket. Did we have to write it somewhere? Gilles 2007/6/12, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
Author: gscokart Date: Tue Jun 12 00:07:33 2007 New Revision: 546397 URL: http://svn.apache.org/viewvc?view=rev&rev=546397 Log: Fix test failure when URI contains spaces Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/repository/vfs/VfsResourceTest.java Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/repository/vfs/VfsResourceTest.java URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/repository/vfs/VfsResourceTest.java?view=diff&rev=546397&r1=546396&r2=546397 ============================================================================== --- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/repository/vfs/VfsResourceTest.java (original) +++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/repository/vfs/VfsResourceTest.java Tue Jun 12 00:07:33 2007 @@ -24,6 +24,8 @@ import java.util.Iterator; import java.util.List; +import org.apache.commons.lang.StringUtils; + import junit.framework.TestCase; public class VfsResourceTest extends TestCase { @@ -65,7 +67,7 @@ // VFS apparently does some weird normalization so that resource id used to create // the VFS resource is not necessarily identical to the id returned from the getName // method <sigh>. We try to work around this by transforming things into java URIs. - if (!new URI(resId).equals(new URI(res.getName()).normalize())) { + if (!new URI(escapeUrl(resId)).equals(new URI(escapeUrl(res.getName())).normalize())) { fail("Failed on getName. Expected: " + resId + ". Actual: " + res.getName()); } @@ -84,6 +86,25 @@ } /** + * Escape invalid URL characters (Copied from Wicket, just use StringUtils instead of Strings) + * + * @param queryString The orginal querystring + * @return url The querystring with invalid characters escaped + */ + private String escapeUrl(String queryString) { + queryString = StringUtils.replace(queryString , " ", "%20"); + queryString = StringUtils.replace(queryString , "\"", "%22"); + queryString = StringUtils.replace(queryString , "%", "%26"); + queryString = StringUtils.replace(queryString , "=", "%3D"); + queryString = StringUtils.replace(queryString , "/", "%2F"); + queryString = StringUtils.replace(queryString , "+", "%2B"); + queryString = StringUtils.replace(queryString , "&", "%26"); + queryString = StringUtils.replace(queryString , "~", "%7E"); + queryString = StringUtils.replace(queryString , "?", "%3F"); + return queryString; + } + + /** * Validating that resource can be created for files which don't physically exists - e.g. * resources that are going to created. */ @@ -104,7 +125,7 @@ // VFS apparently does some weird normalization so that resource id used to create // the VFS resource is not necessarily identical to the id returned from the getName // method <sigh>. We try to work around this by transforming things into java URIs. - if (!new URI(resId).equals(new URI(res.getName()).normalize())) { + if (!new URI(escapeUrl(resId)).equals(new URI(escapeUrl(res.getName())).normalize())) { fail("Failed on getName. Expected: " + resId + ". Actual: " + res.getName()); }
-- Gilles SCOKART
