blob: 198155cdc6db88acdbbce5bfaaabd5abcf4824c6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 Tasktop Technologies.
* 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.versions.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil;
import org.eclipse.mylyn.versions.core.spi.ScmConnector;
import org.eclipse.mylyn.versions.tests.support.MockRepositoryProvider;
import org.eclipse.mylyn.versions.tests.support.MockScmConnector;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Steffen Pingel
*/
public class ScmCoreTest {
@Test
public void testMockConnectorPresent() {
List<ScmConnector> connectors = ScmCore.getAllRegisteredConnectors();
for (ScmConnector connector : connectors) {
if (MockRepositoryProvider.ID.equals(connector.getProviderId())) {
assertEquals(MockScmConnector.class, connector.getClass());
return;
}
}
Assert.fail("Expected MockScmConnector in " + connectors.toString());
}
@Test
public void testGetResource() throws Exception {
setupTestWorkspace();
IResource expectedResource = ResourcesPlugin.getWorkspace()
.getRoot()
.findMember("/project1/src/org/eclipse/mylar/tests/project1/Project1Plugin.java");
assertEquals(expectedResource,
ScmCore.findResource("/project1/src/org/eclipse/mylar/tests/project1/Project1Plugin.java"));
assertEquals(expectedResource,
ScmCore.findResource("project1/src/org/eclipse/mylar/tests/project1/Project1Plugin.java"));
}
@Test
public void testGetResourcePathChild() throws Exception {
setupTestWorkspace();
IResource expectedResource = ResourcesPlugin.getWorkspace()
.getRoot()
.findMember("/project1/src/org/eclipse/mylar/tests/project1/Project1Plugin.java");
assertEquals(
expectedResource,
ScmCore.findResource("/root/level1/level2/project1/src/org/eclipse/mylar/tests/project1/Project1Plugin.java"));
assertEquals(
expectedResource,
ScmCore.findResource("root/level1/level2/project1/src/org/eclipse/mylar/tests/project1/Project1Plugin.java"));
}
@Test
public void testGetResourceFromProject() throws Exception {
setupTestWorkspace();
IResource expectedResource = ResourcesPlugin.getWorkspace()
.getRoot()
.findMember("/project2/src/org/eclipse/mylar/tests/project2/Project2Plugin.java");
assertEquals(expectedResource,
ScmCore.findResource("/src/org/eclipse/mylar/tests/project2/Project2Plugin.java"));
assertEquals(expectedResource, ScmCore.findResource("src/org/eclipse/mylar/tests/project2/Project2Plugin.java"));
}
@Test
public void testGetResourceCannotFind() throws Exception {
setupTestWorkspace();
assertNull(ScmCore.findResource("/project1/randompath"));
assertNull(ScmCore.findResource("/2/src/org/eclipse/mylar/tests/project2/Project2Plugin.java"));
assertNull(ScmCore.findResource("/org/eclipse/mylar/tests/project2/Project2Plugin.java"));
}
private void setupTestWorkspace() throws CoreException, ZipException, IOException {
setupProjectFromZipFile(ScmCoreTest.class, "project1", "project1.zip");
setupProjectFromZipFile(ScmCoreTest.class, "project2", "project2.zip");
}
private IProject setupProjectFromZipFile(Object source, String projectName, String zipFileName)
throws ZipException, IOException, CoreException {
IProject project = createTestProject(projectName);
ZipFile zip = new ZipFile(CommonTestUtil.getFile(source, "testdata/projects/" + zipFileName));
CommonTestUtil.unzip(zip, project.getLocation().toFile());
project.refreshLocal(IResource.DEPTH_INFINITE, null);
return project;
}
private IProject createTestProject(String projectName) throws CoreException {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject(projectName);
if (!project.exists()) {
project.create(new NullProgressMonitor());
} else {
project.refreshLocal(IResource.DEPTH_INFINITE, null);
}
if (!project.isOpen()) {
project.open(new NullProgressMonitor());
}
return project;
}
}