diff options
author | Michael Valenta | 2002-03-27 20:08:22 +0000 |
---|---|---|
committer | Michael Valenta | 2002-03-27 20:08:22 +0000 |
commit | 3ff2fb68928112c48847b87588f4bb07707a6c60 (patch) | |
tree | 7f585bd2e40fb254c3b7730e264fc541d3fda9b2 /tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java | |
parent | 7a70ff52aa9dedebb943b5bccea65b90b63a4efe (diff) | |
download | eclipse.platform.team-3ff2fb68928112c48847b87588f4bb07707a6c60.tar.gz eclipse.platform.team-3ff2fb68928112c48847b87588f4bb07707a6c60.tar.xz eclipse.platform.team-3ff2fb68928112c48847b87588f4bb07707a6c60.zip |
*** empty log message ***
Diffstat (limited to 'tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java')
-rw-r--r-- | tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java new file mode 100644 index 000000000..5f57ef4d6 --- /dev/null +++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java @@ -0,0 +1,152 @@ +/******************************************************************************* + * Copyright (c) 2002 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM - Initial API and implementation + ******************************************************************************/ +package org.eclipse.team.tests.ccvs.core.provider; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.team.ccvs.core.CVSProviderPlugin; +import org.eclipse.team.ccvs.core.ICVSFile; +import org.eclipse.team.ccvs.core.ICVSFolder; +import org.eclipse.team.ccvs.core.ICVSResourceVisitor; +import org.eclipse.team.core.TeamException; +import org.eclipse.team.internal.ccvs.core.CVSException; +import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; +import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; +import org.eclipse.team.internal.ccvs.core.util.ResourceDeltaSyncHandler; +import org.eclipse.team.tests.ccvs.core.CVSTestSetup; +import org.eclipse.team.tests.ccvs.core.EclipseTest; + +public class ResourceDeltaTest extends EclipseTest { + + /** + * Constructor for ResourceDeltaTest. + */ + public ResourceDeltaTest() { + super(); + } + + /** + * Constructor for ResourceDeltaTest. + * @param name + */ + public ResourceDeltaTest(String name) { + super(name); + } + + public static Test suite() { + TestSuite suite = new TestSuite(ResourceDeltaTest.class); + return new CVSTestSetup(suite); + //return new CVSTestSetup(new ResourceDeltaTest("testOrphanedSubtree")); + } + + public void assertNotManaged(ICVSFile cvsFile) throws CVSException { + assertTrue("File " + cvsFile.getName() + " should not be managed", ! cvsFile.isManaged()); + } + + public void assertNotManaged(ICVSFolder cvsFolder) throws CVSException { + assertTrue("Folder " + cvsFolder.getName() + " should not be managed", ! cvsFolder.isManaged()); + assertTrue("Folder " + cvsFolder.getName() + " should not be a cvs folder", ! cvsFolder.isCVSFolder()); + cvsFolder.acceptChildren(new ICVSResourceVisitor() { + public void visitFile(ICVSFile file) throws CVSException { + assertNotManaged(file); + } + public void visitFolder(ICVSFolder folder) throws CVSException { + assertNotManaged(folder); + } + }); + } + + public void assertAdditionMarkerFor(IResource resource, boolean exists) throws CoreException { + if ( ! CVSProviderPlugin.getPlugin().getShowTasksOnAddAndDelete()) return; + IMarker[] markers = resource.findMarkers(ResourceDeltaSyncHandler.ADDITION_MARKER, false, IResource.DEPTH_ZERO); + if (exists) { + assertTrue("Addition marker doesn't exist for " + resource.getName(), markers.length == 1); + } else { + assertTrue("Addition marker exists for " + resource.getName(), markers.length == 0); + } + } + + public void assertDeletionMarkerFor(IResource resource, boolean exists) throws CoreException { + if ( ! CVSProviderPlugin.getPlugin().getShowTasksOnAddAndDelete()) return; + IMarker marker = null; + if (resource.getParent().exists()) { + String name = resource.getName(); + IMarker[] markers = resource.getParent().findMarkers(ResourceDeltaSyncHandler.DELETION_MARKER, false, IResource.DEPTH_ZERO); + for (int i = 0; i < markers.length; i++) { + IMarker iMarker = markers[i]; + String markerName = (String)iMarker.getAttribute(ResourceDeltaSyncHandler.NAME_ATTRIBUTE); + if (markerName.equals(name)) { + marker = iMarker; + break; + } + } + } + if (exists) { + assertTrue("Deletion marker doesn't exist for " + resource.getName(), marker != null); + } else { + assertTrue("Deletion marker exists for " + resource.getName(), marker == null); + } + } + + public void testOrphanedSubtree() throws TeamException, CoreException { + IProject project = createProject("testOrphanedSubtree", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); + IFolder folder = project.getFolder(new Path("folder1")); + folder.move(new Path("moved"), false, false, null); + folder = project.getFolder(new Path("moved")); + ICVSFolder cvsFolder = CVSWorkspaceRoot.getCVSFolderFor(folder); + assertNotManaged(cvsFolder); + assertAdditionMarkerFor(folder, true); + } + + public void testDeletionHandling() throws TeamException, CoreException { + IProject project = createProject("testDeletionHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); + addResources(project, new String[] {"added.txt"}, false); + assertAdditionMarkerFor(project.getFile("added.txt"), false); + deleteResources(project, new String[] {"added.txt", "deleted.txt"}, false); + ICVSFile file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("added.txt")); + assertNotManaged(file); + assertDeletionMarkerFor(project.getFile("added.txt"), false); + file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("deleted.txt")); + assertTrue("File " + file.getName() + " should be managed", file.isManaged()); + ResourceSyncInfo info = file.getSyncInfo(); + assertTrue("File " + file.getName() + " should be marked as deleted", info.isDeleted()); + assertDeletionMarkerFor(project.getFile("deleted.txt"), true); + } + + public void testFileAdditionHandling() throws TeamException, CoreException { + IProject project = createProject("testFileAdditionHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); + deleteResources(project, new String[] {"deleted.txt"}, false); + assertDeletionMarkerFor(project.getFile("deleted.txt"), true); + addResources(project, new String[] {"deleted.txt"}, false); + ICVSFile file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("deleted.txt")); + assertTrue("File " + file.getName() + " should be managed", file.isManaged()); + ResourceSyncInfo info = file.getSyncInfo(); + assertTrue("File " + file.getName() + " should not be marked as deleted", ! info.isDeleted()); + assertTrue("File " + file.getName() + " should not be marked as addition", ! info.isAdded()); + assertDeletionMarkerFor(project.getFile("deleted.txt"), false); + assertAdditionMarkerFor(project.getFile("added.txt"), false); + } + + public void testFolderAdditionHandling() throws TeamException, CoreException { + IProject project = createProject("testFolderAdditionHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); + IFolder folder = project.getFolder("newfolder"); + folder.create(false, true, null); + assertAdditionMarkerFor(folder, true); + getProvider(project).add(new IResource[] {folder}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); + assertAdditionMarkerFor(folder, false); + } +} |