From 98977cbde4a3d139d78e6eb43779b326b3e9d56e Mon Sep 17 00:00:00 2001 From: Chris Recoskie Date: Thu, 27 May 2010 01:40:19 +0000 Subject: further changes for Bug 291815 - fix test failure on UNIX/Linux --- .../core/internal/efsextension/tests/EFSExtensionTests.java | 11 ++++++++++- .../src/org/eclipse/cdt/core/EFSExtensionProvider.java | 5 ++++- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'core') diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/efsextension/tests/EFSExtensionTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/efsextension/tests/EFSExtensionTests.java index a96e62cc6b8..f5b363f4803 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/efsextension/tests/EFSExtensionTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/efsextension/tests/EFSExtensionTests.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.core.internal.efsextension.tests; +import java.io.File; import java.net.URI; import java.net.URISyntaxException; @@ -109,7 +110,15 @@ public class EFSExtensionTests extends TestCase { URI expected = null; try { originalURI = new URI("file", "/c:/foo", null); - expected = new URI("file", "/c:/foo/subdirectory", null); + + if(java.io.File.separatorChar == '\\') { + expected = new URI("file", "/c:/foo/subdirectory", null); + } + else { + // if we're not on Windows then backslash is not the path separator, and instead + // is a valid filename character. Using a backslash will result in it being escaped. + expected = new URI("file", "/c:%5Cfoo%5Csubdirectory", null); + } } catch (URISyntaxException e) { fail(e.getMessage()); } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/EFSExtensionProvider.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/EFSExtensionProvider.java index 3441e8e9b1e..669a4a02c82 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/EFSExtensionProvider.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/EFSExtensionProvider.java @@ -75,6 +75,9 @@ public abstract class EFSExtensionProvider { * null on error. * * The default implementation places the path in the path field of the URI, ensuring that there is a leading slash. + * It also determines whether or not to convert backslashes in the provided path based on whether or not the + * local operating system's file separator is a backslash, thus ensuring proper behaviour for URIs corresponding + * to the local filesystem. * * @param locationOnSameFilesystem * @param path An absolute path. @@ -84,7 +87,7 @@ public abstract class EFSExtensionProvider { URI uri = locationOnSameFilesystem; Path p = new Path(path); - String pathString = p.toString(); // to convert any backslashes to slashes + String pathString = p.toString(); // to convert any backslashes to slashes if we are on Windows final int length = pathString.length(); StringBuffer pathBuf = new StringBuffer(length + 1); -- cgit v1.2.3