| /******************************************************************************* |
| * Copyright (c) 2000, 2015 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.core.tests.resources.regression; |
| |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| import org.eclipse.core.internal.resources.Workspace; |
| import org.eclipse.core.resources.*; |
| import org.eclipse.core.runtime.*; |
| import org.eclipse.core.tests.resources.ResourceTest; |
| |
| public class IWorkspaceTest extends ResourceTest { |
| public IWorkspaceTest() { |
| super(); |
| } |
| |
| public IWorkspaceTest(String name) { |
| super(name); |
| } |
| |
| public static Test suite() { |
| return new TestSuite(IWorkspaceTest.class); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| getWorkspace().getRoot().delete(true, null); |
| } |
| |
| /** |
| * 1GDKIHD: ITPCORE:WINNT - API - IWorkspace.move needs to keep history |
| */ |
| public void testMultiMove_1GDKIHD() { |
| // create common objects |
| IProject project = getWorkspace().getRoot().getProject("MyProject"); |
| try { |
| project.create(getMonitor()); |
| project.open(getMonitor()); |
| } catch (CoreException e) { |
| fail("0.0", e); |
| } |
| |
| // test file (force = true) |
| IFile file1 = project.getFile("file.txt"); |
| IFolder folder = project.getFolder("folder"); |
| IResource[] allResources = new IResource[] {file1, folder}; |
| try { |
| folder.create(true, true, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| getWorkspace().move(new IFile[] {file1}, folder.getFullPath(), true, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| IFileState[] states = file1.getHistory(getMonitor()); |
| assertEquals("1.0", 3, states.length); |
| getWorkspace().delete(allResources, true, getMonitor()); |
| project.clearHistory(getMonitor()); |
| } catch (CoreException e) { |
| fail("1.20", e); |
| } |
| |
| // test file (force = false) |
| try { |
| folder.create(true, true, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| getWorkspace().move(new IFile[] {file1}, folder.getFullPath(), false, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| IFileState[] states = file1.getHistory(getMonitor()); |
| assertEquals("2.0", 3, states.length); |
| getWorkspace().delete(allResources, true, getMonitor()); |
| project.clearHistory(getMonitor()); |
| } catch (CoreException e) { |
| fail("2.20", e); |
| } |
| |
| try { |
| project.delete(true, getMonitor()); |
| } catch (CoreException e) { |
| fail("20.0", e); |
| } |
| } |
| |
| /** |
| * 1GDGRIZ: ITPCORE:WINNT - API - IWorkspace.delete needs to keep history |
| */ |
| public void testMultiDelete_1GDGRIZ() { |
| // create common objects |
| IProject project = getWorkspace().getRoot().getProject("MyProject"); |
| try { |
| project.create(getMonitor()); |
| project.open(getMonitor()); |
| } catch (CoreException e) { |
| fail("0.0", e); |
| } |
| |
| // test file (force = true) |
| IFile file1 = project.getFile("file.txt"); |
| try { |
| file1.create(getRandomContents(), true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| getWorkspace().delete(new IFile[] {file1}, true, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| IFileState[] states = file1.getHistory(getMonitor()); |
| assertEquals("1.0", 3, states.length); |
| getWorkspace().delete(new IResource[] {file1}, true, getMonitor()); |
| project.clearHistory(getMonitor()); |
| } catch (CoreException e) { |
| fail("1.20", e); |
| } |
| |
| // test file (force = false) |
| try { |
| file1.create(getRandomContents(), true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| file1.setContents(getRandomContents(), true, true, getMonitor()); |
| getWorkspace().delete(new IFile[] {file1}, false, getMonitor()); |
| file1.create(getRandomContents(), true, getMonitor()); |
| IFileState[] states = file1.getHistory(getMonitor()); |
| assertEquals("2.0", 3, states.length); |
| getWorkspace().delete(new IResource[] {file1}, true, getMonitor()); |
| project.clearHistory(getMonitor()); |
| } catch (CoreException e) { |
| fail("2.20", e); |
| } |
| |
| // test folder (force = true) |
| IFolder folder = project.getFolder("folder"); |
| IFile file2 = folder.getFile("file2.txt"); |
| try { |
| folder.create(true, true, getMonitor()); |
| file2.create(getRandomContents(), true, getMonitor()); |
| file2.setContents(getRandomContents(), true, true, getMonitor()); |
| file2.setContents(getRandomContents(), true, true, getMonitor()); |
| getWorkspace().delete(new IResource[] {folder}, true, getMonitor()); |
| folder.create(true, true, getMonitor()); |
| file2.create(getRandomContents(), true, getMonitor()); |
| IFileState[] states = file2.getHistory(getMonitor()); |
| assertEquals("3.0", 3, states.length); |
| getWorkspace().delete(new IResource[] {folder, file1, file2}, true, getMonitor()); |
| project.clearHistory(getMonitor()); |
| } catch (CoreException e) { |
| fail("3.20", e); |
| } |
| |
| // test folder (force = false) |
| try { |
| folder.create(true, true, getMonitor()); |
| file2.create(getRandomContents(), true, getMonitor()); |
| file2.setContents(getRandomContents(), true, true, getMonitor()); |
| file2.setContents(getRandomContents(), true, true, getMonitor()); |
| getWorkspace().delete(new IResource[] {folder}, false, getMonitor()); |
| folder.create(true, true, getMonitor()); |
| file2.create(getRandomContents(), true, getMonitor()); |
| IFileState[] states = file2.getHistory(getMonitor()); |
| assertEquals("4.0", 3, states.length); |
| getWorkspace().delete(new IResource[] {folder, file1, file2}, true, getMonitor()); |
| project.clearHistory(getMonitor()); |
| } catch (CoreException e) { |
| fail("4.20", e); |
| } |
| |
| try { |
| project.delete(true, getMonitor()); |
| } catch (CoreException e) { |
| fail("20.0", e); |
| } |
| } |
| |
| public void test_8974() { |
| IProject one = getWorkspace().getRoot().getProject("One"); |
| IPath oneLocation = getRandomLocation().append(one.getName()); |
| oneLocation.toFile().mkdirs(); |
| IProjectDescription oneDescription = getWorkspace().newProjectDescription(one.getName()); |
| oneDescription.setLocation(oneLocation); |
| |
| try { |
| one.create(oneDescription, getMonitor()); |
| } catch (CoreException e) { |
| Workspace.clear(oneLocation.removeLastSegments(1).toFile()); |
| fail("0.0", e); |
| } |
| |
| try { |
| IProject two = getWorkspace().getRoot().getProject("Two"); |
| IPath twoLocation = oneLocation.removeLastSegments(1).append(oneLocation.lastSegment().toLowerCase()); |
| |
| IStatus result = getWorkspace().validateProjectLocation(two, twoLocation); |
| if (Workspace.caseSensitive) { |
| assertTrue("1.0", result.isOK()); |
| } else { |
| assertTrue("1.1", !result.isOK()); |
| } |
| // cleanup |
| ensureDoesNotExistInWorkspace(one); |
| } finally { |
| // ensure that the project directory is cleaned up. |
| Workspace.clear(oneLocation.removeLastSegments(1).toFile()); |
| } |
| } |
| } |