From adea4eee0a38bf9fc914ddf3c82dba8570e0eb81 Mon Sep 17 00:00:00 2001 From: Martin Oberhuber < martin.oberhuber@windriver.com> Date: Wed, 26 May 2010 16:09:59 +0000 Subject: [PATCH] Bug 314496 - testcase for [efs] Broken symbolic links do not report a proper EFS.ATTRIBUTE_LINK_TARGET --- releng/org.eclipse.rse.build/maps/rse.map | 2 +- .../subsystems/files/RSEFileStoreTest.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/releng/org.eclipse.rse.build/maps/rse.map b/releng/org.eclipse.rse.build/maps/rse.map index 3b04d1d1f6f..55ff2f90365 100644 --- a/releng/org.eclipse.rse.build/maps/rse.map +++ b/releng/org.eclipse.rse.build/maps/rse.map @@ -58,7 +58,7 @@ plugin@org.eclipse.rse.subsystems.shells.telnet=v200905272300,:pserver:anonymous plugin@org.eclipse.rse.subsystems.terminals.core=v200908051630,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.subsystems.terminals.core plugin@org.eclipse.rse.subsystems.terminals.ssh=v200908051630,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.subsystems.terminals.ssh plugin@org.eclipse.rse.terminals.ui=v201005221100,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.terminals.ui -plugin@org.eclipse.rse.tests=v201005261430,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/tests/org.eclipse.rse.tests +plugin@org.eclipse.rse.tests=v201005261600,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/tests/org.eclipse.rse.tests plugin@org.eclipse.rse.tests.framework=v200905272300,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/tests/org.eclipse.rse.tests.framework plugin@org.eclipse.rse.ui=v201005221100,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.ui plugin@org.eclipse.rse.useractions=v200905272300,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.useractions \ No newline at end of file diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/RSEFileStoreTest.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/RSEFileStoreTest.java index ad7712d4fec..217cd7ea2e2 100644 --- a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/RSEFileStoreTest.java +++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/RSEFileStoreTest.java @@ -26,6 +26,7 @@ import junit.framework.TestSuite; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileInfo; import org.eclipse.core.filesystem.IFileStore; +import org.eclipse.core.filesystem.URIUtil; import org.eclipse.core.filesystem.provider.FileInfo; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -285,6 +286,36 @@ public class RSEFileStoreTest extends FileServiceBaseTest { //assertTrue("2.6.2", info.getLastModified() <= parentModified); //not actually changed } + public void testBrokenSymlink() throws Exception { + //-test-author-:MartinOberhuber + if (isTestDisabled()) + return; + if (fHomeDirectory != null && fHomeDirectory.getSeparatorChar() == '/' && fHomeDirectory.getParentRemoteFileSubSystem().isCaseSensitive()) { + String testFileName = "broken.txt"; //$NON-NLS-1$ + IRemoteCmdSubSystem rcmd = getShellServiceSubSystem(); + SimpleCommandOperation op = new SimpleCommandOperation(rcmd, fHomeDirectory, true); + op.runCommand("ln -s notExisting2.txt \"" + fTestStorePath + "/" + testFileName + "\"", true); + while (op.isActive()) { + Thread.sleep(200); + } + if ("localConnection.properties".equals(fPropertiesFileName)) { + //RSE-Local on UNIX: check native EFS in addition to RSE-Local + IFileStore efsStore = EFS.getStore(URIUtil.toURI(fTestStorePath+'/'+testFileName)); + IFileInfo efsInfo = efsStore.fetchInfo(); + assertFalse("0.1", efsInfo.exists()); + assertTrue("0.2", efsInfo.getAttribute(EFS.ATTRIBUTE_SYMLINK)); + assertEquals("0.3", "notExisting2.txt", efsInfo.getStringAttribute(EFS.ATTRIBUTE_LINK_TARGET)); + //bug 314494: RSE-Local does not support broken symlinks yet + return; + } + IFileStore brokenStore = fTestStore.getChild(testFileName); + IFileInfo info = brokenStore.fetchInfo(); + assertFalse("1.0", info.exists()); + assertTrue("1.1", info.getAttribute(EFS.ATTRIBUTE_SYMLINK)); + assertEquals("1.2", "notExisting2.txt", info.getStringAttribute(EFS.ATTRIBUTE_LINK_TARGET)); + } + } + public void testDeleteSpecialCases() throws Exception { //-test-author-:MartinOberhuber if (isTestDisabled())