blob: c60abc3aca2b56f3d6c514680c9ab8f62d7938f9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.team.tests.ccvs.core.cvsresources;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.internal.ccvs.core.CVSException;
import org.eclipse.team.internal.ccvs.core.ICVSFolder;
import org.eclipse.team.internal.ccvs.core.ICVSResource;
import org.eclipse.team.internal.ccvs.core.ICVSRunnable;
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
import org.eclipse.team.tests.ccvs.core.CVSTestSetup;
import org.eclipse.team.tests.ccvs.core.EclipseTest;
/**
* What does this class do?
*/
public class EclipseFolderTest extends EclipseTest {
public EclipseFolderTest() {
super();
}
public EclipseFolderTest(String name) {
super(name);
}
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(EclipseFolderTest.class);
return new CVSTestSetup(suite);
}
protected void assertChildrenHaveSync(IContainer root, final boolean hasSync) throws CoreException, CVSException {
root.accept(new IResourceVisitor() {
public boolean visit(IResource resource) throws CoreException {
try {
ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
if(!cvsResource.isIgnored()) {
if(resource.getType()==IResource.FILE) {
assertTrue((cvsResource.getSyncInfo()!=null) == hasSync);
} else {
assertTrue((((ICVSFolder)cvsResource).getFolderSyncInfo()!=null) == hasSync);
}
}
} catch(CVSException e) {
throw new CoreException(e.getStatus());
}
return true;
}
});
}
public void testUnmanageFolder() throws CoreException, TeamException {
IProject project = createProject("testUnmanageFolder_A", new String[] {"a.txt", "folder1/", "folder1/b.txt", "folder1/folder2/", "folder1/folder2/c.txt"});
ICVSFolder cvsProject = CVSWorkspaceRoot.getCVSFolderFor(project);
assertChildrenHaveSync(project, true);
// test that unmanaging the project flushes sync info
cvsProject.unmanage(null);
assertChildrenHaveSync(project, false);
final IProject projectB = createProject("testUnmanageFolder_B", new String[] {"a.txt", "folder1/", "folder1/b.txt", "folder1/folder2/", "folder1/folder2/c.txt"});
final ICVSFolder cvsProjectB = CVSWorkspaceRoot.getCVSFolderFor(projectB);
assertChildrenHaveSync(projectB, true);
// test that unmanaging in a CVS runnable flushes too
cvsProjectB.run(new ICVSRunnable() {
public void run(IProgressMonitor monitor) throws CVSException {
try {
assertChildrenHaveSync(projectB, true);
cvsProjectB.unmanage(null);
assertChildrenHaveSync(projectB, false);
} catch(CoreException e) {
throw CVSException.wrapException(e);
}
}
}, null);
assertChildrenHaveSync(projectB, false);
}
}