/******************************************************************************* | |
* Copyright (c) 2010 Ericsson | |
* | |
* 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 | |
* | |
* Description: | |
* | |
* Contributors: | |
* Alvaro Sanchez-Leon - Initial Implementation | |
*******************************************************************************/ | |
package org.eclipse.mylyn.reviews.r4e.core.rfs; | |
import static org.junit.Assert.fail; | |
import java.util.ArrayList; | |
import java.util.Collection; | |
import java.util.Date; | |
import java.util.Iterator; | |
import java.util.List; | |
import junit.framework.Assert; | |
import org.eclipse.core.resources.IFile; | |
import org.eclipse.core.resources.IProject; | |
import org.eclipse.core.resources.IResource; | |
import org.eclipse.egit.core.op.AddToIndexOperation; | |
import org.eclipse.egit.core.op.CommitOperation; | |
import org.eclipse.egit.core.project.RepositoryMapping; | |
import org.eclipse.egit.core.test.GitTestCase; | |
import org.eclipse.egit.core.test.TestRepository; | |
import org.eclipse.egit.core.test.TestUtils; | |
import org.eclipse.jgit.lib.Repository; | |
import org.eclipse.mylyn.reviews.r4e.core.TstGeneral; | |
import org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext; | |
import org.eclipse.mylyn.reviews.r4e.core.model.R4EItem; | |
import org.eclipse.mylyn.reviews.r4e.core.model.R4EUser; | |
import org.eclipse.mylyn.reviews.r4e.core.model.RModelFactory; | |
import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewVersionsException; | |
import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF; | |
import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF.CommitDescriptor; | |
import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIF.FileVersionInfo; | |
import org.eclipse.mylyn.reviews.r4e.core.versions.ReviewsVersionsIFFactory; | |
import org.junit.After; | |
import org.junit.Before; | |
import org.junit.Test; | |
/** | |
* @author lmcalvs | |
* | |
*/ | |
public class ReviewsVersionsIFTst extends GitTestCase { | |
// ------------------------------------------------------------------------ | |
// Constants | |
// ------------------------------------------------------------------------ | |
private IProject fIProject = null; | |
private TestRepository testRepo = null; | |
private Repository repo = null; | |
private ReviewsVersionsIF versionsProx = null; | |
private List<IResource> resources = new ArrayList<IResource>(); | |
private IFile ifileA = null; | |
private IFile ifileB = null; | |
// ------------------------------------------------------------------------ | |
// Setup and Teardown | |
// ------------------------------------------------------------------------ | |
/** | |
* @throws java.lang.Exception | |
*/ | |
@Before | |
public void setUp() throws Exception { | |
super.setUp(); | |
TstGeneral.activateTracer(); | |
fIProject = project.getProject(); | |
fIProject.open(null); | |
testRepo = new TestRepository(gitDir); | |
testRepo.connect(fIProject); | |
repo = RepositoryMapping.getMapping(fIProject).getRepository(); | |
versionsProx = ReviewsVersionsIFFactory.instance.getVersionsIF(fIProject); | |
// Add a couple of files to the project | |
ifileA = testUtils.addFileToProject(fIProject, "sub/a.txt", "a text"); | |
ifileB = testUtils.addFileToProject(fIProject, "sub/b.txt", "b text"); | |
// Add folder to index and commit | |
resources.add(project.getProject().getFolder("sub")); | |
new AddToIndexOperation(resources).execute(null); | |
CommitOperation commitOperation = new CommitOperation(null, null, null, TestUtils.AUTHOR, TestUtils.COMMITTER, | |
"first commit"); | |
commitOperation.setCommitAll(true); | |
commitOperation.setRepository(repo); | |
commitOperation.execute(null); | |
fIProject.refreshLocal(IProject.DEPTH_INFINITE, null); | |
} | |
/** | |
* @throws java.lang.Exception | |
*/ | |
@After | |
public void tearDown() throws Exception { | |
testRepo.disconnect(fIProject); | |
fIProject.close(null); | |
testRepo.dispose(); | |
repo = null; | |
super.tearDown(); | |
} | |
// ------------------------------------------------------------------------ | |
// Methods | |
// ------------------------------------------------------------------------ | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#isProviderSupported(org.eclipse.core.resources.IProject)} | |
* . | |
*/ | |
@Test | |
public void testIsProviderSupported() { | |
boolean supported = versionsProx.isProviderSupported(fIProject); | |
Assert.assertTrue("not supported", supported); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#getLastCommitInfo(org.eclipse.core.resources.IProject)} | |
* . | |
*/ | |
@Test | |
public void testGetLastCommitInfo() { | |
CommitDescriptor cdesc = null; | |
try { | |
cdesc = versionsProx.getLastCommitInfo(fIProject); | |
} catch (ReviewVersionsException e) { | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
printCommitDescriptor(cdesc); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#getCommitInfo(org.eclipse.core.resources.IProject, java.lang.String)} | |
* . | |
*/ | |
@Test | |
public void testGetCommitInfo() { | |
CommitDescriptor cdesc = null; | |
try { | |
String lastCommitId = versionsProx.getLastCommitInfo(fIProject).getId(); | |
cdesc = versionsProx.getCommitInfo(fIProject, lastCommitId); | |
} catch (ReviewVersionsException e) { | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
printCommitDescriptor(cdesc); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#createCommitReviewItem(org.eclipse.core.resources.IProject, java.lang.String, java.lang.String)} | |
* . | |
*/ | |
@Test | |
public void testCreateCommitReviewItem() { | |
try { | |
R4EItem revItem = createLastCommitRevItem(); | |
System.out.println(revItem.toString()); | |
} catch (ReviewVersionsException e) { | |
Collection<String> details = e.getDetails(); | |
if (details != null) { | |
for (Iterator<String> iterator = details.iterator(); iterator.hasNext();) { | |
String info = iterator.next(); | |
System.out.println(info); | |
} | |
} | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#getFileVersionInfo(org.eclipse.core.resources.IFile)} | |
* . | |
*/ | |
@Test | |
public void testGetFileVersionInfo() { | |
FileVersionInfo info = null; | |
try { | |
info = versionsProx.getFileVersionInfo(ifileA); | |
} catch (ReviewVersionsException e) { | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
Assert.assertEquals("ecb10eba688e6ce0c7b5af81ed48c0d764d604fc", info.getId()); | |
Assert.assertEquals("Project-1/sub/a.txt", info.getRepositoryPath()); | |
Assert.assertEquals("a.txt", info.getName()); | |
try { | |
info = versionsProx.getFileVersionInfo(ifileB); | |
} catch (ReviewVersionsException e) { | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
Assert.assertEquals("Project-1/sub/b.txt", info.getRepositoryPath()); | |
Assert.assertEquals("b.txt", info.getName()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#openCompareSession(org.eclipse.mylyn.reviews.r4e.core.model.R4EItem)} | |
* . | |
*/ | |
@Test | |
public void testOpenCompareSession() { | |
R4EItem revItem = null; | |
try { | |
revItem = createLastCommitRevItem(); | |
} catch (ReviewVersionsException e) { | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
List<R4EFileContext> contextLst = revItem.getFileContextList(); | |
if (contextLst == null || contextLst.size() < 1) { | |
fail("Unexpected empty context"); | |
} | |
// take the first one | |
R4EFileContext context = contextLst.get(0); | |
String bookingId = null; | |
try { | |
bookingId = versionsProx.openCompareSession(revItem); | |
versionsProx.openCompareEditor(bookingId, context); | |
} catch (ReviewVersionsException e) { | |
e.printStackTrace(); | |
fail("Exception"); | |
} | |
versionsProx.closeCompareSession(bookingId); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#openCompareEditor(java.lang.String, org.eclipse.mylyn.reviews.r4e.core.model.R4EFileContext)} | |
* . | |
*/ | |
@Test | |
public void testOpenCompareEditor() { | |
fail("Not yet implemented"); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.mylyn.reviews.r4e.core.versions.impl.ReviewsVersionsIF#closeCompareSession(java.lang.String)}. | |
*/ | |
@Test | |
public void testCloseCompareSession() { | |
fail("Not yet implemented"); | |
} | |
/** | |
* @return | |
* @throws ReviewVersionsException | |
*/ | |
private R4EItem createLastCommitRevItem() throws ReviewVersionsException { | |
R4EUser reviewUser = RModelFactory.eINSTANCE.createR4EUser(); | |
reviewUser.setId("userIdX"); | |
String lastCommitId = versionsProx.getLastCommitInfo(fIProject).getId(); | |
R4EItem revItem = versionsProx.createCommitReviewItem(fIProject, lastCommitId, reviewUser); | |
return revItem; | |
} | |
private void printCommitDescriptor(CommitDescriptor cdesc) { | |
System.out.println("Author: " + cdesc.getAuthor()); | |
System.out.println("Commiter: " + cdesc.getCommitter()); | |
System.out.println("Id: " + cdesc.getId()); | |
System.out.println("Message: " + cdesc.getMessage()); | |
System.out.println("Title: " + cdesc.getTitle()); | |
String[] changeSets = cdesc.getChangeSet(); | |
for (int i = 0; i < changeSets.length; i++) { | |
String change = changeSets[i]; | |
System.out.println("Change " + i + ": " + change); | |
} | |
System.out.println("Commit Date: " + new Date(cdesc.getCommitDate())); | |
String[] parents = cdesc.getParentIDs(); | |
for (int i = 0; i < parents.length; i++) { | |
String parent = parents[i]; | |
System.out.println("Parent " + i + ": " + parent); | |
} | |
} | |
} | |