blob: f57223cf48f30e84ab8e9a8317be36ce5c2c4d5b [file] [log] [blame]
/*******************************************************************************
* 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());
}
}
}