| /******************************************************************************* |
| * Copyright (c) 2000, 2012 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.core.tests.filesystem; |
| |
| import java.io.File; |
| import java.io.OutputStream; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| import java.util.Date; |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| import org.eclipse.core.filesystem.*; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.runtime.*; |
| import org.eclipse.core.tests.internal.localstore.LocalStoreTest; |
| |
| /** |
| * Basic tests for the IFileStore API |
| */ |
| public class FileStoreTest extends LocalStoreTest { |
| public static Test suite() { |
| return new TestSuite(FileStoreTest.class); |
| } |
| |
| public FileStoreTest() { |
| super(); |
| } |
| |
| public FileStoreTest(String name) { |
| super(name); |
| } |
| |
| private IFileStore createDir(IFileStore store, boolean clear) throws CoreException { |
| if (clear && store.fetchInfo().exists()) { |
| store.delete(EFS.NONE, null); |
| } |
| store.mkdir(EFS.NONE, null); |
| IFileInfo info = store.fetchInfo(); |
| assertTrue("createDir.1", info.exists()); |
| assertTrue("createDir.1", info.isDirectory()); |
| return store; |
| } |
| |
| private IFileStore createDir(String string, boolean clear) throws CoreException { |
| return createDir(EFS.getFileSystem(EFS.SCHEME_FILE).getStore(new Path(string)), clear); |
| } |
| |
| /** |
| * Tests behavior of IFileStore#fetchInfo when underlying file system |
| * throws exceptions. |
| */ |
| public void testBrokenFetchInfo() { |
| IFileStore broken = null; |
| try { |
| broken = EFS.getStore(new URI("broken://a/b/c")); |
| } catch (CoreException e) { |
| fail("0.98", e); |
| } catch (URISyntaxException e) { |
| fail("0.99", e); |
| } |
| //no-arg fetch info should return non-existent file |
| IFileInfo info = broken.fetchInfo(); |
| assertTrue("1.0", !info.exists()); |
| |
| //two-arg fetchInfo should throw exception |
| try { |
| info = broken.fetchInfo(EFS.NONE, getMonitor()); |
| fail("2.0"); |
| } catch (CoreException e) { |
| //expected |
| } |
| } |
| |
| private IFileStore getDirFileStore(String path) throws CoreException { |
| IFileStore store = EFS.getFileSystem(EFS.SCHEME_FILE).getStore(new Path(path)); |
| store.mkdir(EFS.NONE, null); |
| return store; |
| } |
| |
| private IFileStore[] getFileStoresOnTwoVolumes() { |
| IFileStore[] tempDirs = new IFileStore[2]; |
| |
| for (int i = 99/*c*/; i < 123/*z*/; i++) { |
| char c = (char) i; |
| try { |
| IFileStore store = getDirFileStore(c + ":/temp"); |
| IFileInfo info = store.fetchInfo(); |
| if (info.exists() && info.isDirectory() && !info.getAttribute(EFS.ATTRIBUTE_READ_ONLY)) { |
| if (tempDirs[0] == null) { |
| tempDirs[0] = store; |
| } else { |
| tempDirs[1] = store; |
| break; //both temp dirs have been created |
| } |
| } |
| } catch (CoreException e) {//ignore and go to next volume |
| continue; |
| } |
| } |
| return tempDirs; |
| } |
| |
| /** |
| * Basically this is a test for the Windows Platform. |
| */ |
| public void testCopyAcrossVolumes() throws Throwable { |
| IFileStore[] tempDirectories = getFileStoresOnTwoVolumes(); |
| |
| /* test if we are in the adequate environment */ |
| if (tempDirectories == null || tempDirectories.length < 2 || tempDirectories[0] == null || tempDirectories[1] == null) { |
| return; |
| } |
| |
| /* build scenario */ |
| // create source root folder |
| IFileStore tempSrc = tempDirectories[0]; |
| /* get the destination folder */ |
| IFileStore tempDest = tempDirectories[1]; |
| // create tree |
| IFileStore target = tempSrc.getChild("target"); |
| createDir(target, true); |
| createTree(getTree(target)); |
| |
| /* c:\temp\target -> d:\temp\target */ |
| IFileStore destination = tempDest.getChild("target"); |
| target.copy(destination, EFS.NONE, null); |
| assertTrue("3.1", verifyTree(getTree(destination))); |
| destination.delete(EFS.NONE, null); |
| |
| /* c:\temp\target -> d:\temp\copy of target */ |
| destination = tempDest.getChild("copy of target"); |
| target.copy(destination, EFS.NONE, null); |
| assertTrue("4.1", verifyTree(getTree(destination))); |
| destination.delete(EFS.NONE, null); |
| |
| /* c:\temp\target -> d:\temp\target (but the destination is already a file) */ |
| destination = tempDest.getChild("target"); |
| String anotherContent = "nothing..................gnihton"; |
| createFile(destination, anotherContent); |
| assertTrue("5.1", !destination.fetchInfo().isDirectory()); |
| try { |
| target.copy(destination, EFS.NONE, null); |
| fail("5.2"); |
| } catch (CoreException e) { |
| //should fail |
| } |
| assertTrue("5.3", !verifyTree(getTree(destination))); |
| destination.delete(EFS.NONE, null); |
| |
| /* c:\temp\target -> d:\temp\target (but the destination is already a folder */ |
| destination = tempDest.getChild("target"); |
| createDir(destination, true); |
| target.copy(destination, EFS.NONE, null); |
| assertTrue("6.2", verifyTree(getTree(destination))); |
| destination.delete(EFS.NONE, null); |
| |
| /* remove trash */ |
| target.delete(EFS.NONE, null); |
| } |
| |
| public void testCopyDirectory() throws Throwable { |
| /* build scenario */ |
| IFileStore temp = EFS.getFileSystem(EFS.SCHEME_FILE).getStore(getWorkspace().getRoot().getLocation().append("temp")); |
| temp.mkdir(EFS.NONE, null); |
| assertTrue("1.1", temp.fetchInfo().isDirectory()); |
| // create tree |
| IFileStore target = temp.getChild("target"); |
| target.delete(EFS.NONE, null); |
| createTree(getTree(target)); |
| |
| /* temp\target -> temp\copy of target */ |
| IFileStore copyOfTarget = temp.getChild("copy of target"); |
| target.copy(copyOfTarget, EFS.NONE, null); |
| assertTrue("2.1", verifyTree(getTree(copyOfTarget))); |
| |
| /* remove trash */ |
| target.delete(EFS.NONE, null); |
| copyOfTarget.delete(EFS.NONE, null); |
| } |
| |
| public void testCopyDirectoryParentMissing() throws Throwable { |
| IFileStore parent = getTempStore(); |
| IFileStore child = parent.getChild("child"); |
| IFileStore existing = getTempStore(); |
| createFile(existing, getRandomString()); |
| //try to copy when parent of destination does not exist |
| try { |
| existing.copy(child, EFS.NONE, getMonitor()); |
| fail("1.0"); |
| } catch (CoreException e) { |
| //should fail |
| } |
| //destination should not exist |
| assertTrue("1.1", !child.fetchInfo().exists()); |
| } |
| |
| public void testCopyFile() throws Throwable { |
| /* build scenario */ |
| IFileStore temp = createDir(getWorkspace().getRoot().getLocation().append("temp").toString(), true); |
| // create target |
| String content = "this is just a simple content \n to a simple file \n to test a 'simple' copy"; |
| IFileStore target = temp.getChild("target"); |
| target.delete(EFS.NONE, null); |
| createFile(target, content); |
| assertTrue("1.3", target.fetchInfo().exists()); |
| assertTrue("1.4", compareContent(getContents(content), target.openInputStream(EFS.NONE, null))); |
| |
| /* temp\target -> temp\copy of target */ |
| IFileStore copyOfTarget = temp.getChild("copy of target"); |
| target.copy(copyOfTarget, IResource.DEPTH_INFINITE, null); |
| assertTrue("2.1", compareContent(getContents(content), copyOfTarget.openInputStream(EFS.NONE, null))); |
| copyOfTarget.delete(EFS.NONE, null); |
| |
| // We need to know whether or not we can unset the read-only flag |
| // in order to perform this part of the test. |
| if (isReadOnlySupported()) { |
| /* make source read-only and try the copy temp\target -> temp\copy of target */ |
| copyOfTarget = temp.getChild("copy of target"); |
| setReadOnly(target, true); |
| |
| target.copy(copyOfTarget, IResource.DEPTH_INFINITE, null); |
| assertTrue("3.1", compareContent(getContents(content), copyOfTarget.openInputStream(EFS.NONE, null))); |
| // reset read only flag for cleanup |
| setReadOnly(copyOfTarget, false); |
| copyOfTarget.delete(EFS.NONE, null); |
| // reset the read only flag for cleanup |
| setReadOnly(target, false); |
| target.delete(EFS.NONE, null); |
| } |
| |
| /* copy a big file to test progress monitor */ |
| StringBuffer sb = new StringBuffer(); |
| for (int i = 0; i < 1000; i++) { |
| sb.append("asdjhasldhaslkfjhasldkfjhasdlkfjhasdlfkjhasdflkjhsdaf"); |
| } |
| IFileStore bigFile = temp.getChild("bigFile"); |
| createFile(bigFile, sb.toString()); |
| assertTrue("7.1", bigFile.fetchInfo().exists()); |
| assertTrue("7.2", compareContent(getContents(sb.toString()), bigFile.openInputStream(EFS.NONE, null))); |
| IFileStore destination = temp.getChild("copy of bigFile"); |
| //IProgressMonitor monitor = new LoggingProgressMonitor(System.out); |
| IProgressMonitor monitor = getMonitor(); |
| bigFile.copy(destination, EFS.NONE, monitor); |
| assertTrue("7.3", compareContent(getContents(sb.toString()), destination.openInputStream(EFS.NONE, null))); |
| destination.delete(EFS.NONE, null); |
| |
| /* take out the trash */ |
| temp.delete(EFS.NONE, null); |
| } |
| |
| /** |
| * Basically this is a test for the Windows Platform. |
| */ |
| public void testCopyFileAcrossVolumes() throws Throwable { |
| IFileStore[] tempDirectories = getFileStoresOnTwoVolumes(); |
| |
| /* test if we are in the adequate environment */ |
| if (tempDirectories == null || tempDirectories.length < 2 || tempDirectories[0] == null || tempDirectories[1] == null) { |
| return; |
| } |
| |
| /* build scenario */ |
| /* get the source folder */ |
| IFileStore tempSrc = tempDirectories[0]; |
| /* get the destination folder */ |
| IFileStore tempDest = tempDirectories[1]; |
| // create target |
| String content = "this is just a simple content \n to a simple file \n to test a 'simple' copy"; |
| IFileStore target = tempSrc.getChild("target"); |
| target.delete(EFS.NONE, null); |
| createFile(target, content); |
| assertTrue("1.3", target.fetchInfo().exists()); |
| assertTrue("1.4", compareContent(getContents(content), target.openInputStream(EFS.NONE, null))); |
| |
| /* c:\temp\target -> d:\temp\target */ |
| IFileStore destination = tempDest.getChild("target"); |
| target.copy(destination, IResource.DEPTH_INFINITE, null); |
| assertTrue("3.1", compareContent(getContents(content), destination.openInputStream(EFS.NONE, null))); |
| destination.delete(EFS.NONE, null); |
| |
| /* c:\temp\target -> d:\temp\copy of target */ |
| destination = tempDest.getChild("copy of target"); |
| target.copy(destination, IResource.DEPTH_INFINITE, null); |
| assertTrue("4.1", compareContent(getContents(content), destination.openInputStream(EFS.NONE, null))); |
| destination.delete(EFS.NONE, null); |
| |
| /* c:\temp\target -> d:\temp\target (but the destination is already a file */ |
| destination = tempDest.getChild("target"); |
| String anotherContent = "nothing..................gnihton"; |
| createFile(destination, anotherContent); |
| assertTrue("5.1", !destination.fetchInfo().isDirectory()); |
| target.copy(destination, IResource.DEPTH_INFINITE, null); |
| assertTrue("5.2", compareContent(getContents(content), destination.openInputStream(EFS.NONE, null))); |
| destination.delete(EFS.NONE, null); |
| |
| /* c:\temp\target -> d:\temp\target (but the destination is already a folder */ |
| destination = tempDest.getChild("target"); |
| createDir(destination, true); |
| assertTrue("6.1", destination.fetchInfo().isDirectory()); |
| boolean ok = false; |
| try { |
| target.copy(destination, EFS.NONE, null); |
| } catch (CoreException e) { |
| /* test if the input stream inside the copy method was closed */ |
| target.delete(EFS.NONE, null); |
| createFile(target, content); |
| ok = true; |
| } |
| assertTrue("6.2", ok); |
| assertTrue("6.3", destination.fetchInfo().isDirectory()); |
| destination.delete(EFS.NONE, null); |
| |
| /* remove trash */ |
| target.delete(EFS.NONE, null); |
| } |
| |
| public void testGetLength() throws Exception { |
| // evaluate test environment |
| IPath root = getWorkspace().getRoot().getLocation().append("" + new Date().getTime()); |
| IFileStore temp = createDir(root.toString(), true); |
| try { |
| // create common objects |
| IFileStore target = temp.getChild("target"); |
| |
| // test non-existent file |
| assertEquals("1.0", EFS.NONE, target.fetchInfo().getLength()); |
| |
| // create empty file |
| target.openOutputStream(EFS.NONE, null).close(); |
| assertEquals("1.0", 0, target.fetchInfo().getLength()); |
| |
| // add a byte |
| OutputStream out = target.openOutputStream(EFS.NONE, null); |
| out.write(5); |
| out.close(); |
| assertEquals("1.0", 1, target.fetchInfo().getLength()); |
| } finally { |
| /* remove trash */ |
| temp.delete(EFS.NONE, null); |
| } |
| |
| } |
| |
| public void testGetStat() throws CoreException { |
| /* evaluate test environment */ |
| IPath root = getWorkspace().getRoot().getLocation().append("" + new Date().getTime()); |
| IFileStore temp = createDir(root.toString(), true); |
| |
| /* create common objects */ |
| IFileStore target = temp.getChild("target"); |
| long stat; |
| |
| /* test stat with an non-existing file */ |
| stat = target.fetchInfo().getLastModified(); |
| assertEquals("1.0", EFS.NONE, stat); |
| |
| /* test stat with an existing folder */ |
| createDir(target, true); |
| stat = target.fetchInfo().getLastModified(); |
| assertTrue("2.0", EFS.NONE != stat); |
| |
| /* remove trash */ |
| temp.delete(EFS.NONE, null); |
| } |
| |
| public void testMove() throws Throwable { |
| /* build scenario */ |
| IFileStore tempC = createDir(getWorkspace().getRoot().getLocation().append("temp").toString(), true); |
| // create target file |
| IFileStore target = tempC.getChild("target"); |
| String content = "just a content.....tnetnoc a tsuj"; |
| createFile(target, content); |
| assertTrue("1.3", target.fetchInfo().exists()); |
| // create target tree |
| IFileStore tree = tempC.getChild("tree"); |
| createDir(tree, true); |
| createTree(getTree(tree)); |
| |
| /* rename file */ |
| IFileStore destination = tempC.getChild("destination"); |
| target.move(destination, EFS.NONE, null); |
| assertTrue("2.1", !destination.fetchInfo().isDirectory()); |
| assertTrue("2.2", !target.fetchInfo().exists()); |
| destination.move(target, EFS.NONE, null); |
| assertTrue("2.3", !target.fetchInfo().isDirectory()); |
| assertTrue("2.4", !destination.fetchInfo().exists()); |
| |
| /* rename file (but destination is already a file) */ |
| String anotherContent = "another content"; |
| createFile(destination, anotherContent); |
| boolean ok = false; |
| try { |
| target.move(destination, EFS.NONE, null); |
| } catch (CoreException e) { |
| ok = true; |
| } |
| assertTrue("3.1", ok); |
| assertTrue("3.2", !target.fetchInfo().isDirectory()); |
| destination.delete(EFS.NONE, null); |
| assertTrue("3.3", !destination.fetchInfo().exists()); |
| |
| /* rename file (but destination is already a folder) */ |
| createDir(destination, true); |
| try { |
| target.move(destination, EFS.NONE, null); |
| } catch (CoreException e) { |
| ok = true; |
| } |
| assertTrue("4.1", ok); |
| assertTrue("4.2", !target.fetchInfo().isDirectory()); |
| destination.delete(EFS.NONE, null); |
| assertTrue("4.3", !destination.fetchInfo().exists()); |
| |
| /* rename folder */ |
| destination = tempC.getChild("destination"); |
| tree.move(destination, EFS.NONE, null); |
| assertTrue("6.1", verifyTree(getTree(destination))); |
| assertTrue("6.2", !tree.fetchInfo().exists()); |
| destination.move(tree, EFS.NONE, null); |
| assertTrue("6.3", verifyTree(getTree(tree))); |
| assertTrue("6.4", !destination.fetchInfo().exists()); |
| |
| /* remove trash */ |
| target.delete(EFS.NONE, null); |
| tree.delete(EFS.NONE, null); |
| } |
| |
| public void testMoveAcrossVolumes() throws Throwable { |
| IFileStore[] tempDirectories = getFileStoresOnTwoVolumes(); |
| |
| /* test if we are in the adequate environment */ |
| if (tempDirectories == null || tempDirectories.length < 2 || tempDirectories[0] == null || tempDirectories[1] == null) { |
| return; |
| } |
| |
| /* build scenario */ |
| /* get the source folder */ |
| IFileStore tempSrc = tempDirectories[0]; |
| /* get the destination folder */ |
| IFileStore tempDest = tempDirectories[1]; |
| // create target file |
| IFileStore target = tempSrc.getChild("target"); |
| String content = "just a content.....tnetnoc a tsuj"; |
| createFile(target, content); |
| assertTrue("1.3", target.fetchInfo().exists()); |
| // create target tree |
| IFileStore tree = tempSrc.getChild("tree"); |
| createDir(tree, true); |
| createTree(getTree(tree)); |
| |
| /* move file across volumes */ |
| IFileStore destination = tempDest.getChild("target"); |
| target.move(destination, EFS.NONE, null); |
| assertTrue("5.1", !destination.fetchInfo().isDirectory()); |
| assertTrue("5.2", !target.fetchInfo().exists()); |
| destination.move(target, EFS.NONE, null); |
| assertTrue("5.3", !target.fetchInfo().isDirectory()); |
| assertTrue("5.4", !destination.fetchInfo().exists()); |
| |
| /* move folder across volumes */ |
| destination = tempDest.getChild("target"); |
| tree.move(destination, EFS.NONE, null); |
| assertTrue("9.1", verifyTree(getTree(destination))); |
| assertTrue("9.2", !tree.fetchInfo().exists()); |
| destination.move(tree, EFS.NONE, null); |
| assertTrue("9.3", verifyTree(getTree(tree))); |
| assertTrue("9.4", !destination.fetchInfo().exists()); |
| |
| /* remove trash */ |
| target.delete(EFS.NONE, null); |
| tree.delete(EFS.NONE, null); |
| } |
| |
| public void testMoveDirectoryParentMissing() throws Throwable { |
| IFileStore parent = getTempStore(); |
| IFileStore child = parent.getChild("child"); |
| IFileStore existing = getTempStore(); |
| createFile(existing, getRandomString()); |
| //try to move when parent of destination does not exist |
| try { |
| existing.move(child, EFS.NONE, getMonitor()); |
| fail("1.0"); |
| } catch (CoreException e) { |
| //should fail |
| } |
| //destination should not exist |
| assertTrue("1.1", !child.fetchInfo().exists()); |
| } |
| |
| /** |
| * Tests public API method {@link IFileStore#putInfo(IFileInfo, int, IProgressMonitor)}. |
| */ |
| public void testPutInfo() { |
| IFileStore nonExisting = getTempStore(); |
| |
| //assert that modifying a non-existing store fails |
| IFileInfo info = nonExisting.fetchInfo(); |
| info.setLastModified(System.currentTimeMillis()); |
| try { |
| nonExisting.putInfo(info, EFS.SET_LAST_MODIFIED, getMonitor()); |
| fail("1.0"); |
| } catch (CoreException e) { |
| //expected |
| } |
| info = nonExisting.fetchInfo(); |
| info.setAttribute(EFS.ATTRIBUTE_READ_ONLY, false); |
| try { |
| nonExisting.putInfo(info, EFS.SET_ATTRIBUTES, getMonitor()); |
| fail("1.1"); |
| } catch (CoreException e) { |
| //expected |
| } |
| } |
| |
| public void testReadOnly() throws CoreException { |
| testAttribute(EFS.ATTRIBUTE_READ_ONLY); |
| } |
| |
| public void testPermissionsEnabled() { |
| String os = Platform.getOS(); |
| String arch = Platform.getOSArch(); |
| if (Platform.OS_LINUX.equals(os) || (Platform.OS_SOLARIS.equals(os) && Platform.ARCH_SPARC.equals(arch)) || Platform.OS_MACOSX.equals(os) || Platform.OS_AIX.equals(os)) { |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_OWNER_READ)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_OWNER_WRITE)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_OWNER_EXECUTE)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_GROUP_READ)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_GROUP_WRITE)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_GROUP_EXECUTE)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_OTHER_READ)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_OTHER_WRITE)); |
| assertTrue(isAttributeSupported(EFS.ATTRIBUTE_OTHER_EXECUTE)); |
| } else { |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_OWNER_READ)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_OWNER_WRITE)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_OWNER_EXECUTE)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_GROUP_READ)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_GROUP_WRITE)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_GROUP_EXECUTE)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_OTHER_READ)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_OTHER_WRITE)); |
| assertFalse(isAttributeSupported(EFS.ATTRIBUTE_OTHER_EXECUTE)); |
| } |
| } |
| |
| public void testPermissions() throws CoreException { |
| testAttribute(EFS.ATTRIBUTE_OWNER_READ); |
| testAttribute(EFS.ATTRIBUTE_OWNER_WRITE); |
| testAttribute(EFS.ATTRIBUTE_OWNER_EXECUTE); |
| testAttribute(EFS.ATTRIBUTE_GROUP_READ); |
| testAttribute(EFS.ATTRIBUTE_GROUP_WRITE); |
| testAttribute(EFS.ATTRIBUTE_GROUP_EXECUTE); |
| testAttribute(EFS.ATTRIBUTE_OTHER_READ); |
| testAttribute(EFS.ATTRIBUTE_OTHER_WRITE); |
| testAttribute(EFS.ATTRIBUTE_OTHER_EXECUTE); |
| } |
| |
| private void testAttribute(int attribute) throws CoreException { |
| if (!isAttributeSupported(attribute)) { |
| return; |
| } |
| |
| IPath root = getWorkspace().getRoot().getLocation().append("" + new Date().getTime()); |
| IFileStore targetFolder = createDir(root.toString(), true); |
| try { |
| IFileStore targetFile = targetFolder.getChild("targetFile"); |
| createFileInFileSystem(targetFile); |
| |
| // file |
| boolean init = targetFile.fetchInfo().getAttribute(attribute); |
| setAttribute(targetFile, attribute, !init); |
| assertTrue("1.2", targetFile.fetchInfo().getAttribute(attribute) != init); |
| setAttribute(targetFile, attribute, init); |
| assertTrue("1.4", targetFile.fetchInfo().getAttribute(attribute) == init); |
| |
| // folder |
| init = targetFolder.fetchInfo().getAttribute(attribute); |
| setAttribute(targetFolder, attribute, !init); |
| assertTrue("2.2", targetFolder.fetchInfo().getAttribute(attribute) != init); |
| setAttribute(targetFolder, attribute, init); |
| assertTrue("2.4", targetFolder.fetchInfo().getAttribute(attribute) == init); |
| |
| } finally { |
| /* remove trash */ |
| targetFolder.delete(EFS.NONE, null); |
| } |
| } |
| |
| public void testGetFileStore() throws Exception { |
| // create files |
| File file = getTempDir().append("test.txt").toFile(); |
| file.createNewFile(); |
| assertTrue("1.0", file.exists()); |
| |
| IFileStore tempStore = createDir(getTempDir().append("temp").toString(), true); |
| createDir(getTempDir().append("temp/temp2").toString(), true); |
| |
| file = getTempDir().append("temp/temp2/test.txt").toFile(); |
| file.createNewFile(); |
| assertTrue("2.0", file.exists()); |
| |
| // check the parent reference |
| IPath relativePath = new Path("../test.txt"); |
| |
| IFileStore relativeStore = tempStore.getFileStore(relativePath); |
| assertNotNull("3.0", relativeStore); |
| IFileInfo info = relativeStore.fetchInfo(); |
| assertNotNull("4.0", info); |
| assertTrue("5.0", info.exists()); |
| |
| // check the parent and self reference |
| relativePath = new Path(".././test.txt"); |
| |
| relativeStore = tempStore.getFileStore(relativePath); |
| assertNotNull("6.0", relativeStore); |
| info = relativeStore.fetchInfo(); |
| assertNotNull("7.0", info); |
| assertTrue("8.0", info.exists()); |
| |
| // check the a path with no parent and self references |
| relativePath = new Path("temp2/test.txt"); |
| |
| relativeStore = tempStore.getFileStore(relativePath); |
| assertNotNull("9.0", relativeStore); |
| info = relativeStore.fetchInfo(); |
| assertNotNull("10.0", info); |
| assertTrue("11.0", info.exists()); |
| } |
| } |