diff options
-rw-r--r-- | tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java index e0ed760a0..4c6a8267d 100644 --- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java +++ b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/harness/CoreTest.java @@ -248,17 +248,23 @@ public class CoreTest extends TestCase { */ protected boolean canCreateSymLinks() { if (canCreateSymLinks == null) { - IPath tempDir = getTempDir(); - String linkName = FileSystemHelper.getRandomLocation(tempDir).lastSegment(); - try { - // Try to create a symlink. - createSymLink(tempDir.toFile(), linkName, "testTarget", false); - // Clean up if the link was created. - new File(tempDir.toFile(), linkName).delete(); + if (isWindowsVistaOrHigher()) { + // Creation of a symbolic link on Windows requires administrator privileges, + // so it may or may not be possible. + IPath tempDir = getTempDir(); + String linkName = FileSystemHelper.getRandomLocation(tempDir).lastSegment(); + try { + // Try to create a symlink. + createSymLink(tempDir.toFile(), linkName, "testTarget", false); + // Clean up if the link was created. + new File(tempDir.toFile(), linkName).delete(); + canCreateSymLinks = Boolean.TRUE; + } catch (AssertionFailedError e) { + // This exception indicates that creation of the symlink failed. + canCreateSymLinks = Boolean.FALSE; + } + } else { canCreateSymLinks = Boolean.TRUE; - } catch (AssertionFailedError e) { - // This exception indicates that creation of the symlink failed. - canCreateSymLinks = Boolean.FALSE; } } return canCreateSymLinks.booleanValue(); |