diff options
Diffstat (limited to 'org.eclipse.egit.core.test/src')
5 files changed, 0 insertions, 1062 deletions
diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProviderTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProviderTest.java deleted file mode 100644 index 37929acd17..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/DirCacheResourceVariantTreeProviderTest.java +++ /dev/null @@ -1,194 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2015 Obeo and others. - * - * 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 - *******************************************************************************/ -package org.eclipse.egit.core.internal.merge; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import java.io.File; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.egit.core.op.MergeOperation; -import org.junit.Test; - -public class DirCacheResourceVariantTreeProviderTest extends VariantsTestCase { - @Test - public void testDirCacheAddToIndex() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - testRepo.appendFileContent(file1, INITIAL_CONTENT_1); - - // untracked file : not part of the index - DirCacheResourceVariantTreeProvider treeProvider = new DirCacheResourceVariantTreeProvider( - repo); - assertTrue(treeProvider.getKnownResources().isEmpty()); - assertFalse(treeProvider.getBaseTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getSourceTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getRemoteTree().hasResourceVariant(iFile1)); - - testRepo.addToIndex(iFile1); - - // We now have a stage 0, but this isn't represented in the resource - // variant tree provider - treeProvider = new DirCacheResourceVariantTreeProvider(repo); - assertTrue(treeProvider.getKnownResources().isEmpty()); - assertFalse(treeProvider.getBaseTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getSourceTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getRemoteTree().hasResourceVariant(iFile1)); - } - - @Test - public void testDirCacheTreesNoConflict() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2, - "second file - initial commit"); - - IFile iFile1 = testRepo.getIFile(iProject, file1); - IFile iFile2 = testRepo.getIFile(iProject, file2); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - final String branchChanges = "branch changes\n"; - setContentsAndCommit(testRepo, iFile2, branchChanges - + INITIAL_CONTENT_2, "branch commit"); - - testRepo.checkoutBranch(MASTER); - - final String masterChanges = "\nsome changes"; - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + masterChanges, "master commit"); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - // end setup - - // try and merge the branch into master - new MergeOperation(repo, BRANCH).execute(null); - - // no conflict on either file : nothing in the trees - DirCacheResourceVariantTreeProvider treeProvider = new DirCacheResourceVariantTreeProvider( - repo); - assertTrue(treeProvider.getKnownResources().isEmpty()); - - assertFalse(treeProvider.getBaseTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getBaseTree().hasResourceVariant(iFile2)); - - assertFalse(treeProvider.getSourceTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getSourceTree().hasResourceVariant(iFile2)); - - assertFalse(treeProvider.getRemoteTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getRemoteTree().hasResourceVariant(iFile2)); - } - - @Test - public void testDirCacheTreesConflictOnOne() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2, - "second file - initial commit"); - - IFile iFile1 = testRepo.getIFile(iProject, file1); - IFile iFile2 = testRepo.getIFile(iProject, file2); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - final String branchChanges = "branch changes\n"; - setContentsAndCommit(testRepo, iFile1, branchChanges - + INITIAL_CONTENT_1, "branch commit"); - setContentsAndCommit(testRepo, iFile2, branchChanges - + INITIAL_CONTENT_2, "branch commit"); - - testRepo.checkoutBranch(MASTER); - - final String masterChanges = "\nsome changes"; - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + masterChanges, "master commit"); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - // end setup - - // try and merge the branch into master - new MergeOperation(repo, BRANCH).execute(null); - - // conflict on file 1 : present in all three trees - // no conflict on file 2 : not present in any tree - DirCacheResourceVariantTreeProvider treeProvider = new DirCacheResourceVariantTreeProvider( - repo); - assertTrue(treeProvider.getKnownResources().contains(iFile1)); - assertFalse(treeProvider.getKnownResources().contains(iFile2)); - - assertTrue(treeProvider.getBaseTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getBaseTree().hasResourceVariant(iFile2)); - - assertTrue(treeProvider.getSourceTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getSourceTree().hasResourceVariant(iFile2)); - - assertTrue(treeProvider.getRemoteTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getRemoteTree().hasResourceVariant(iFile2)); - } - - @Test - public void testDirCacheTreesConflict() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - - IFile iFile1 = testRepo.getIFile(iProject, file1); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - final String branchChanges = "branch changes\n"; - setContentsAndCommit(testRepo, iFile1, branchChanges - + INITIAL_CONTENT_1, "branch commit"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2 - + "branch", "second file - initial commit - branch"); - - testRepo.checkoutBranch(MASTER); - - final String masterChanges = "some changes\n"; - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + masterChanges, "master commit - file1"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2 - + "master", "second file - initial commit - master"); - IFile iFile2 = testRepo.getIFile(iProject, file2); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - // end setup - - // try and merge the branch into master - new MergeOperation(repo, BRANCH).execute(null); - - // conflict on file 1 : file 1 has three stages. - // conflict on file 2, but was not in the base : only stage 2 and 3 - DirCacheResourceVariantTreeProvider treeProvider = new DirCacheResourceVariantTreeProvider( - repo); - assertTrue(treeProvider.getKnownResources().contains(iFile1)); - assertTrue(treeProvider.getKnownResources().contains(iFile2)); - - assertTrue(treeProvider.getBaseTree().hasResourceVariant(iFile1)); - assertFalse(treeProvider.getBaseTree().hasResourceVariant(iFile2)); - - assertTrue(treeProvider.getSourceTree().hasResourceVariant(iFile1)); - assertTrue(treeProvider.getSourceTree().hasResourceVariant(iFile2)); - - assertTrue(treeProvider.getRemoteTree().hasResourceVariant(iFile1)); - assertTrue(treeProvider.getRemoteTree().hasResourceVariant(iFile2)); - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/GitResourceVariantTreeSubscriberTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/GitResourceVariantTreeSubscriberTest.java deleted file mode 100644 index 8b1f9b05a4..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/GitResourceVariantTreeSubscriberTest.java +++ /dev/null @@ -1,358 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2015 Obeo and others. - * - * 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 - *******************************************************************************/ -package org.eclipse.egit.core.internal.merge; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -import java.io.File; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jgit.revwalk.RevTree; -import org.eclipse.jgit.revwalk.RevWalk; -import org.eclipse.jgit.treewalk.NameConflictTreeWalk; -import org.eclipse.jgit.treewalk.TreeWalk; -import org.eclipse.team.core.diff.IDiff; -import org.eclipse.team.core.diff.IThreeWayDiff; -import org.eclipse.team.core.history.IFileRevision; -import org.eclipse.team.core.mapping.provider.ResourceDiff; -import org.eclipse.team.core.synchronize.SyncInfo; -import org.eclipse.team.core.variants.IResourceVariant; -import org.junit.Before; -import org.junit.Test; - -public class GitResourceVariantTreeSubscriberTest extends VariantsTestCase { - private static final String BRANCH_CHANGES = "branch changes\n"; - - private static final String MASTER_CHANGES = "\nsome changes"; - - private static final String BASE = "base"; - - private File file1; - - private File file2; - - private IFile iFile1; - - private IFile iFile2; - - @Override - @Before - public void setUp() throws Exception { - super.setUp(); - - file1 = testRepo.createFile(iProject, "file1"); - file2 = testRepo.createFile(iProject, "file2"); - - iFile1 = testRepo.getIFile(iProject, file1); - iFile2 = testRepo.getIFile(iProject, file2); - } - - @Test - public void testSubscriber() throws Exception { - GitResourceVariantTreeProvider provider = createTreeProvider(); - GitResourceVariantTreeSubscriber subscriber = new GitResourceVariantTreeSubscriber( - provider); - - assertTrue(subscriber.isSupervised(iProject)); - assertTrue(subscriber.isSupervised(iFile1)); - assertTrue(subscriber.isSupervised(iFile2)); - - assertSame(provider.getBaseTree(), subscriber.getBaseTree()); - assertSame(provider.getRemoteTree(), subscriber.getRemoteTree()); - assertSame(provider.getSourceTree(), subscriber.getSourceTree()); - - assertNotNull(subscriber.getDiff(iProject)); - assertNotNull(subscriber.getDiff(iFile1)); - assertNotNull(subscriber.getDiff(iFile2)); - - assertNotNull(subscriber.getSyncInfo(iProject)); - assertNotNull(subscriber.getSyncInfo(iFile1)); - assertNotNull(subscriber.getSyncInfo(iFile2)); - - } - - @Test - public void testSyncInfo() throws Exception { - GitResourceVariantTreeProvider provider = createTreeProvider(); - GitResourceVariantTreeSubscriber subscriber = new GitResourceVariantTreeSubscriber( - provider); - - final SyncInfo projectInfo = subscriber.getSyncInfo(iProject); - assertNotNull(projectInfo); - assertEquals(SyncInfo.CONFLICTING | SyncInfo.CHANGE, - projectInfo.getKind()); - - final SyncInfo syncInfo1 = subscriber.getSyncInfo(iFile1); - assertNotNull(syncInfo1); - assertEquals(SyncInfo.OUTGOING | SyncInfo.CHANGE, syncInfo1.getKind()); - IResourceVariant baseVariant1 = syncInfo1.getBase(); - IResourceVariant remoteVariant1 = syncInfo1.getRemote(); - assertContentEquals(baseVariant1, INITIAL_CONTENT_1); - assertContentEquals(remoteVariant1, INITIAL_CONTENT_1); - - final SyncInfo syncInfo2 = subscriber.getSyncInfo(iFile2); - assertNotNull(syncInfo2); - assertEquals(SyncInfo.INCOMING | SyncInfo.CHANGE, syncInfo2.getKind()); - IResourceVariant baseVariant2 = syncInfo2.getBase(); - IResourceVariant remoteVariant2 = syncInfo2.getRemote(); - assertContentEquals(baseVariant2, INITIAL_CONTENT_2); - assertContentEquals(remoteVariant2, BRANCH_CHANGES + INITIAL_CONTENT_2); - } - - @Test - public void testDiff() throws Exception { - GitResourceVariantTreeProvider provider = createTreeProvider(); - GitResourceVariantTreeSubscriber subscriber = new GitResourceVariantTreeSubscriber( - provider); - - final IDiff diff1 = subscriber.getDiff(iFile1); - assertTrue(diff1 instanceof IThreeWayDiff); - assertEquals(IDiff.CHANGE, diff1.getKind()); - assertEquals(IThreeWayDiff.OUTGOING, - ((IThreeWayDiff) diff1).getDirection()); - final IDiff localDiff1 = ((IThreeWayDiff) diff1).getLocalChange(); - final IDiff remoteDiff1 = ((IThreeWayDiff) diff1).getRemoteChange(); - assertNull(remoteDiff1); - assertTrue(localDiff1 instanceof ResourceDiff); - final IFileRevision localState1 = ((ResourceDiff) localDiff1) - .getAfterState(); - final IFileRevision baseState1 = ((ResourceDiff) localDiff1) - .getBeforeState(); - assertNotNull(localState1); - assertNotNull(baseState1); - assertTrue(iFile1.getName().equals(localState1.getName())); - assertTrue(iFile1.getName().equals(baseState1.getName())); - final IStorage localStorage1 = localState1 - .getStorage(new NullProgressMonitor()); - final IStorage baseStorage1 = baseState1 - .getStorage(new NullProgressMonitor()); - assertContentEquals(localStorage1, INITIAL_CONTENT_1 + MASTER_CHANGES); - assertContentEquals(baseStorage1, INITIAL_CONTENT_1); - - final IDiff diff2 = subscriber.getDiff(iFile2); - assertTrue(diff2 instanceof IThreeWayDiff); - assertEquals(IDiff.CHANGE, diff2.getKind()); - assertEquals(IThreeWayDiff.INCOMING, - ((IThreeWayDiff) diff2).getDirection()); - final IDiff localDiff2 = ((IThreeWayDiff) diff2).getLocalChange(); - final IDiff remoteDiff2 = ((IThreeWayDiff) diff2).getRemoteChange(); - assertTrue(remoteDiff2 instanceof ResourceDiff); - assertNull(localDiff2); - final IFileRevision remoteState2 = ((ResourceDiff) remoteDiff2) - .getAfterState(); - final IFileRevision ancestorState2 = ((ResourceDiff) remoteDiff2) - .getBeforeState(); - assertTrue(iFile2.getName().equals(ancestorState2.getName())); - assertTrue(iFile2.getName().equals(remoteState2.getName())); - final IStorage ancestorStorage2 = ancestorState2 - .getStorage(new NullProgressMonitor()); - final IStorage remoteStorage2 = remoteState2 - .getStorage(new NullProgressMonitor()); - assertContentEquals(ancestorStorage2, INITIAL_CONTENT_2); - assertContentEquals(remoteStorage2, BRANCH_CHANGES + INITIAL_CONTENT_2); - } - - @Test - public void testAddLocalAndRemote() throws Exception { - GitResourceVariantTreeProvider provider = createTreeProviderWithAdditions(); - GitResourceVariantTreeSubscriber subscriber = new GitResourceVariantTreeSubscriber( - provider); - - final IDiff diff1 = subscriber.getDiff(iFile1); - assertTrue(diff1 instanceof IThreeWayDiff); - assertEquals(IDiff.ADD, diff1.getKind()); - assertEquals(IThreeWayDiff.OUTGOING, - ((IThreeWayDiff) diff1).getDirection()); - final IDiff localDiff1 = ((IThreeWayDiff) diff1).getLocalChange(); - final IDiff remoteDiff1 = ((IThreeWayDiff) diff1).getRemoteChange(); - assertTrue(localDiff1 instanceof ResourceDiff); - assertNull(remoteDiff1); - final IFileRevision ancestorState1 = ((ResourceDiff) localDiff1) - .getBeforeState(); - final IFileRevision localState1 = ((ResourceDiff) localDiff1) - .getAfterState(); - assertTrue(iFile1.getName().equals(localState1.getName())); - assertNull(ancestorState1); - final IStorage localStorage1 = localState1 - .getStorage(new NullProgressMonitor()); - assertContentEquals(localStorage1, INITIAL_CONTENT_1); - - final IDiff diff2 = subscriber.getDiff(iFile2); - assertTrue(diff2 instanceof IThreeWayDiff); - assertEquals(IDiff.ADD, diff2.getKind()); - assertEquals(IThreeWayDiff.INCOMING, - ((IThreeWayDiff) diff2).getDirection()); - final IDiff localDiff2 = ((IThreeWayDiff) diff2).getLocalChange(); - final IDiff remoteDiff2 = ((IThreeWayDiff) diff2).getRemoteChange(); - assertTrue(remoteDiff2 instanceof ResourceDiff); - assertNull(localDiff2); - final IFileRevision ancestorState2 = ((ResourceDiff) remoteDiff2) - .getBeforeState(); - final IFileRevision remoteState2 = ((ResourceDiff) remoteDiff2) - .getAfterState(); - assertNull(ancestorState2); - assertTrue(iFile2.getName().equals(remoteState2.getName())); - final IStorage remoteStorage2 = remoteState2 - .getStorage(new NullProgressMonitor()); - assertContentEquals(remoteStorage2, INITIAL_CONTENT_2); - } - - @Test - public void testRemoveLocalAndRemote() throws Exception { - GitResourceVariantTreeProvider provider = createTreeProviderWithDeletions(); - GitResourceVariantTreeSubscriber subscriber = new GitResourceVariantTreeSubscriber( - provider); - - // file1 has been removed locally - final IDiff diff1 = subscriber.getDiff(iFile1); - assertTrue(diff1 instanceof IThreeWayDiff); - assertEquals(IDiff.REMOVE, diff1.getKind()); - assertEquals(IThreeWayDiff.OUTGOING, - ((IThreeWayDiff) diff1).getDirection()); - final IDiff localDiff1 = ((IThreeWayDiff) diff1).getLocalChange(); - final IDiff remoteDiff1 = ((IThreeWayDiff) diff1).getRemoteChange(); - assertTrue(localDiff1 instanceof ResourceDiff); - assertNull(remoteDiff1); - final IFileRevision ancestorState1 = ((ResourceDiff) localDiff1) - .getBeforeState(); - final IFileRevision localState1 = ((ResourceDiff) localDiff1) - .getAfterState(); - assertTrue(iFile1.getName().equals(ancestorState1.getName())); - assertNull(localState1); - final IStorage ancestorStorage1 = ancestorState1 - .getStorage(new NullProgressMonitor()); - assertContentEquals(ancestorStorage1, INITIAL_CONTENT_1); - - // file2 has been removed remotely - final IDiff diff2 = subscriber.getDiff(iFile2); - assertTrue(diff2 instanceof IThreeWayDiff); - assertEquals(IDiff.REMOVE, diff2.getKind()); - assertEquals(IThreeWayDiff.INCOMING, - ((IThreeWayDiff) diff2).getDirection()); - final IDiff localDiff2 = ((IThreeWayDiff) diff2).getLocalChange(); - final IDiff remoteDiff2 = ((IThreeWayDiff) diff2).getRemoteChange(); - assertTrue(remoteDiff2 instanceof ResourceDiff); - assertNull(localDiff2); - final IFileRevision ancestorState2 = ((ResourceDiff) remoteDiff2) - .getBeforeState(); - final IFileRevision remoteState2 = ((ResourceDiff) remoteDiff2) - .getAfterState(); - assertTrue(iFile2.getName().equals(ancestorState2.getName())); - assertNull(remoteState2); - final IStorage rancestorStorage2 = ancestorState2 - .getStorage(new NullProgressMonitor()); - assertContentEquals(rancestorStorage2, INITIAL_CONTENT_2); - } - - private GitResourceVariantTreeProvider createTreeProvider() - throws Exception { - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - testRepo.appendContentAndCommit(iProject, file2, - INITIAL_CONTENT_2, "second file - initial commit"); - testRepo.createBranch(MASTER, BASE); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - setContentsAndCommit(testRepo, iFile2, BRANCH_CHANGES - + INITIAL_CONTENT_2, "branch commit"); - - testRepo.checkoutBranch(MASTER); - - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + MASTER_CHANGES, "master commit"); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - - // as if we tried to merge branch into master - try (RevWalk walk = new RevWalk(repo)) { - RevTree baseTree = walk.parseTree(repo.resolve(BASE)); - RevTree sourceTree = walk.parseTree(repo.resolve(MASTER)); - RevTree remoteTree = walk.parseTree(repo.resolve(BRANCH)); - TreeWalk treeWalk = new NameConflictTreeWalk(repo); - treeWalk.addTree(baseTree); - treeWalk.addTree(sourceTree); - treeWalk.addTree(remoteTree); - return new TreeWalkResourceVariantTreeProvider(repo, treeWalk, 0, - 1, 2); - } - } - - private GitResourceVariantTreeProvider createTreeProviderWithAdditions() - throws Exception { - testRepo.createBranch(MASTER, BASE); - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - file2 = testRepo.createFile(iProject, "file2"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2, - "Creation of file2 in branch2."); - - testRepo.checkoutBranch(MASTER); - file1 = testRepo.createFile(iProject, "file1"); - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "Creation of file1 in branch1."); - - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - - // as if we tried to merge branch3 into branch2 - try (RevWalk walk = new RevWalk(repo)) { - RevTree baseTree = walk.parseTree(repo.resolve(BASE)); - RevTree sourceTree = walk.parseTree(repo.resolve(MASTER)); - RevTree remoteTree = walk.parseTree(repo.resolve(BRANCH)); - TreeWalk treeWalk = new NameConflictTreeWalk(repo); - treeWalk.addTree(baseTree); - treeWalk.addTree(sourceTree); - treeWalk.addTree(remoteTree); - return new TreeWalkResourceVariantTreeProvider(repo, treeWalk, 0, - 1, 2); - } - } - - private GitResourceVariantTreeProvider createTreeProviderWithDeletions() - throws Exception { - file1 = testRepo.createFile(iProject, "file1"); - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "Creation of file1 in branch1."); - file2 = testRepo.createFile(iProject, "file2"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2, - "Creation of file2 in branch2."); - testRepo.createBranch(MASTER, BASE); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - testRepo.untrack(file2); - testRepo.commit("Removed file2 in branch."); - - testRepo.checkoutBranch(MASTER); - testRepo.untrack(file1); - testRepo.commit("Removed file1 in master."); - - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - - // as if we tried to merge branch3 into branch2 - try (RevWalk walk = new RevWalk(repo)) { - RevTree baseTree = walk.parseTree(repo.resolve(BASE)); - RevTree sourceTree = walk.parseTree(repo.resolve(MASTER)); - RevTree remoteTree = walk.parseTree(repo.resolve(BRANCH)); - TreeWalk treeWalk = new NameConflictTreeWalk(repo); - treeWalk.addTree(baseTree); - treeWalk.addTree(sourceTree); - treeWalk.addTree(remoteTree); - return new TreeWalkResourceVariantTreeProvider(repo, treeWalk, 0, - 1, 2); - } - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/ResourceVariantTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/ResourceVariantTest.java deleted file mode 100644 index 767fcd7d0e..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/ResourceVariantTest.java +++ /dev/null @@ -1,308 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2015 Obeo and others. - * - * 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 - *******************************************************************************/ -package org.eclipse.egit.core.internal.merge; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.File; -import java.util.Arrays; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.egit.core.internal.storage.AbstractGitResourceVariant; -import org.eclipse.egit.core.internal.storage.IndexResourceVariant; -import org.eclipse.egit.core.internal.storage.TreeParserResourceVariant; -import org.eclipse.egit.core.op.MergeOperation; -import org.eclipse.jgit.dircache.DirCache; -import org.eclipse.jgit.dircache.DirCacheEntry; -import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.revwalk.RevWalk; -import org.eclipse.jgit.treewalk.CanonicalTreeParser; -import org.eclipse.jgit.treewalk.TreeWalk; -import org.junit.Test; - -public class ResourceVariantTest extends VariantsTestCase { - private final static String BASE_BRANCH = "base"; - - private final static String BRANCH_CHANGE = "branch changes\n"; - - private final static String MASTER_CHANGE = "master changes\n"; - - @Test - public void testIndexVariants() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - IFile iFile2 = testRepo.getIFile(iProject, file2); - - setupUnconflictingBranches(); - - List<String> possibleNames = Arrays.asList(iFile1.getName(), - iFile2.getName()); - DirCache cache = repo.readDirCache(); - for (int i = 0; i < cache.getEntryCount(); i++) { - final DirCacheEntry entry = cache.getEntry(i); - - AbstractGitResourceVariant variant = IndexResourceVariant.create( - repo, entry); - - assertEquals(entry.getObjectId().getName(), - variant.getContentIdentifier()); - assertTrue(possibleNames.contains(variant.getName())); - assertEquals(entry.getObjectId(), variant.getObjectId()); - assertEquals(entry.getRawMode(), variant.getRawMode()); - if (iFile1.getName().equals(variant.getName())) { - assertContentEquals(variant, INITIAL_CONTENT_1 + MASTER_CHANGE); - } else { - assertContentEquals(variant, INITIAL_CONTENT_2 + MASTER_CHANGE); - } - } - - testRepo.checkoutBranch(BRANCH); - - cache = repo.readDirCache(); - for (int i = 0; i < cache.getEntryCount(); i++) { - final DirCacheEntry entry = cache.getEntry(i); - - AbstractGitResourceVariant variant = IndexResourceVariant.create( - repo, entry); - assertEquals(entry.getObjectId().getName(), - variant.getContentIdentifier()); - assertTrue(possibleNames.contains(variant.getName())); - assertEquals(entry.getObjectId(), variant.getObjectId()); - assertEquals(entry.getRawMode(), variant.getRawMode()); - if (iFile1.getName().equals(variant.getName())) { - assertContentEquals(variant, BRANCH_CHANGE + INITIAL_CONTENT_1); - } else { - assertContentEquals(variant, BRANCH_CHANGE + INITIAL_CONTENT_2); - } - } - } - - @Test - public void testIndexVariantsConflict() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - setupConflictingBranches(); - // end setup - - // create a conflict to force multiple stages - new MergeOperation(repo, BRANCH).execute(null); - - DirCache cache = repo.readDirCache(); - // 3 stages for file 1, 2 stages for file 2 - assertEquals(5, cache.getEntryCount()); - for (int i = 0; i < cache.getEntryCount(); i++) { - final DirCacheEntry entry = cache.getEntry(i); - - AbstractGitResourceVariant variant = IndexResourceVariant.create( - repo, entry); - assertEquals(entry.getObjectId().getName(), - variant.getContentIdentifier()); - assertEquals(entry.getObjectId(), variant.getObjectId()); - assertEquals(entry.getRawMode(), variant.getRawMode()); - if (iFile1.getName().equals(variant.getName())) { - switch (entry.getStage()) { - case DirCacheEntry.STAGE_1: - assertContentEquals(variant, INITIAL_CONTENT_1); - break; - case DirCacheEntry.STAGE_2: - assertContentEquals(variant, INITIAL_CONTENT_1 - + MASTER_CHANGE); - break; - case DirCacheEntry.STAGE_3: - assertContentEquals(variant, BRANCH_CHANGE - + INITIAL_CONTENT_1); - break; - case DirCacheEntry.STAGE_0: - default: - fail("Unexpected entry stage " + entry.getStage() - + " in the index for file " + entry.getPathString()); - break; - } - } else { - switch (entry.getStage()) { - case DirCacheEntry.STAGE_2: - assertContentEquals(variant, INITIAL_CONTENT_2 - + MASTER_CHANGE); - break; - case DirCacheEntry.STAGE_3: - assertContentEquals(variant, BRANCH_CHANGE - + INITIAL_CONTENT_2); - break; - case DirCacheEntry.STAGE_0: - case DirCacheEntry.STAGE_1: - default: - fail("Unexpected entry stage " + entry.getStage() - + " in the index for file " + entry.getPathString()); - break; - } - } - } - } - - @Test - public void testTreeWalkBranchVariants() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - setupUnconflictingBranches(); - - ObjectId baseId = repo.resolve(BRANCH); - try (RevWalk walk = new RevWalk(repo); - TreeWalk tw = new TreeWalk(repo)) { - tw.addTree(walk.parseTree(baseId)); - - while (tw.next()) { - AbstractGitResourceVariant variant = TreeParserResourceVariant - .create(repo, tw.getTree(0, CanonicalTreeParser.class)); - - assertEquals(tw.getObjectId(0).getName(), - variant.getContentIdentifier()); - assertEquals(tw.getObjectId(0), variant.getObjectId()); - assertEquals(tw.getRawMode(0), variant.getRawMode()); - if (iFile1.getName().equals(variant.getName())) { - assertContentEquals(variant, - BRANCH_CHANGE + INITIAL_CONTENT_1); - } else if (!tw.isSubtree()) { - assertContentEquals(variant, - BRANCH_CHANGE + INITIAL_CONTENT_2); - } - - if (tw.isSubtree()) { - tw.enterSubtree(); - } - } - } - } - - @Test - public void testTreeWalkMasterVariants() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - setupUnconflictingBranches(); - - ObjectId baseId = repo.resolve(MASTER); - try (RevWalk walk = new RevWalk(repo); - TreeWalk tw = new TreeWalk(repo)) { - tw.addTree(walk.parseTree(baseId)); - - while (tw.next()) { - AbstractGitResourceVariant variant = TreeParserResourceVariant - .create(repo, tw.getTree(0, CanonicalTreeParser.class)); - - assertEquals(tw.getObjectId(0).getName(), - variant.getContentIdentifier()); - assertEquals(tw.getObjectId(0), variant.getObjectId()); - assertEquals(tw.getRawMode(0), variant.getRawMode()); - if (iFile1.getName().equals(variant.getName())) { - assertContentEquals(variant, - INITIAL_CONTENT_1 + MASTER_CHANGE); - } else if (!tw.isSubtree()) { - assertContentEquals(variant, - INITIAL_CONTENT_2 + MASTER_CHANGE); - } - - if (tw.isSubtree()) { - tw.enterSubtree(); - } - } - } - } - - @Test - public void testTreeWalkBaseVariants() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - setupUnconflictingBranches(); - - ObjectId baseId = repo.resolve(BASE_BRANCH); - try (RevWalk walk = new RevWalk(repo); - TreeWalk tw = new TreeWalk(repo)) { - tw.addTree(walk.parseTree(baseId)); - - while (tw.next()) { - AbstractGitResourceVariant variant = TreeParserResourceVariant - .create(repo, tw.getTree(0, CanonicalTreeParser.class)); - - assertEquals(tw.getObjectId(0).getName(), - variant.getContentIdentifier()); - assertEquals(tw.getObjectId(0), variant.getObjectId()); - assertEquals(tw.getRawMode(0), variant.getRawMode()); - if (iFile1.getName().equals(variant.getName())) { - assertContentEquals(variant, INITIAL_CONTENT_1); - } else if (!tw.isSubtree()) { - fail("file2 shouldn't exist in our base."); - } - - if (tw.isSubtree()) { - tw.enterSubtree(); - } - } - } - } - - private void setupUnconflictingBranches() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - - testRepo.createBranch(MASTER, BASE_BRANCH); - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - setContentsAndCommit(testRepo, iFile1, BRANCH_CHANGE - + INITIAL_CONTENT_1, "branch commit"); - testRepo.appendContentAndCommit(iProject, file2, BRANCH_CHANGE - + INITIAL_CONTENT_2, "second file - initial commit - branch"); - - testRepo.checkoutBranch(MASTER); - - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + MASTER_CHANGE, "master commit - file1"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2 - + MASTER_CHANGE, "second file - initial commit - master"); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - } - - private void setupConflictingBranches() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - IFile iFile1 = testRepo.getIFile(iProject, file1); - - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - setContentsAndCommit(testRepo, iFile1, BRANCH_CHANGE - + INITIAL_CONTENT_1, "branch commit"); - testRepo.appendContentAndCommit(iProject, file2, BRANCH_CHANGE - + INITIAL_CONTENT_2, "second file - initial commit - branch"); - - testRepo.checkoutBranch(MASTER); - - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + MASTER_CHANGE, "master commit - file1"); - testRepo.appendContentAndCommit(iProject, file2, INITIAL_CONTENT_2 - + MASTER_CHANGE, "second file - initial commit - master"); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProviderTest.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProviderTest.java deleted file mode 100644 index d1508c728a..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/TreeWalkResourceVariantTreeProviderTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2015 Obeo and others. - * - * 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 - *******************************************************************************/ -package org.eclipse.egit.core.internal.merge; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.io.File; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.revwalk.RevTree; -import org.eclipse.jgit.revwalk.RevWalk; -import org.eclipse.jgit.treewalk.NameConflictTreeWalk; -import org.eclipse.jgit.treewalk.TreeWalk; -import org.eclipse.team.core.variants.IResourceVariant; -import org.junit.Test; - -public class TreeWalkResourceVariantTreeProviderTest extends VariantsTestCase { - @Test - public void testTreeWalkTrees() throws Exception { - File file1 = testRepo.createFile(iProject, "file1"); - File file2 = testRepo.createFile(iProject, "file2"); - - testRepo.appendContentAndCommit(iProject, file1, INITIAL_CONTENT_1, - "first file - initial commit"); - RevCommit baseCommit = testRepo.appendContentAndCommit(iProject, file2, - INITIAL_CONTENT_2, "second file - initial commit"); - - IFile iFile1 = testRepo.getIFile(iProject, file1); - IFile iFile2 = testRepo.getIFile(iProject, file2); - - testRepo.createAndCheckoutBranch(MASTER, BRANCH); - - final String branchChanges = "branch changes\n"; - setContentsAndCommit(testRepo, iFile2, branchChanges - + INITIAL_CONTENT_2, "branch commit"); - - testRepo.checkoutBranch(MASTER); - - final String masterChanges = "\nsome changes"; - setContentsAndCommit(testRepo, iFile1, INITIAL_CONTENT_1 - + masterChanges, "master commit"); - iProject.refreshLocal(IResource.DEPTH_INFINITE, - new NullProgressMonitor()); - // end setup - - // as if we tried to merge branch into master - try (RevWalk walk = new RevWalk(repo)) { - RevTree baseTree = walk.parseTree(baseCommit.getId()); - RevTree sourceTree = walk.parseTree(repo.resolve(MASTER)); - RevTree remoteTree = walk.parseTree(repo.resolve(BRANCH)); - TreeWalk treeWalk = new NameConflictTreeWalk(repo); - treeWalk.addTree(baseTree); - treeWalk.addTree(sourceTree); - treeWalk.addTree(remoteTree); - TreeWalkResourceVariantTreeProvider treeProvider = new TreeWalkResourceVariantTreeProvider( - repo, treeWalk, 0, 1, 2); - - assertEquals(1, treeProvider.getRoots().size()); - assertTrue(treeProvider.getRoots().contains(iProject)); - - assertTrue(treeProvider.getKnownResources().contains(iFile1)); - assertTrue(treeProvider.getKnownResources().contains(iFile2)); - - IResourceVariant file1BaseVariant = treeProvider.getBaseTree() - .getResourceVariant(iFile1); - IResourceVariant file2BaseVariant = treeProvider.getBaseTree() - .getResourceVariant(iFile2); - assertContentEquals(file1BaseVariant, INITIAL_CONTENT_1); - assertContentEquals(file2BaseVariant, INITIAL_CONTENT_2); - - IResourceVariant file1TheirsVariant = treeProvider.getRemoteTree() - .getResourceVariant(iFile1); - IResourceVariant file2TheirsVariant = treeProvider.getRemoteTree() - .getResourceVariant(iFile2); - assertContentEquals(file1TheirsVariant, INITIAL_CONTENT_1); - assertContentEquals(file2TheirsVariant, branchChanges - + INITIAL_CONTENT_2); - - IResourceVariant file1OursVariant = treeProvider.getSourceTree() - .getResourceVariant(iFile1); - IResourceVariant file2OursVariant = treeProvider.getSourceTree() - .getResourceVariant(iFile2); - assertContentEquals(file1OursVariant, INITIAL_CONTENT_1 - + masterChanges); - assertContentEquals(file2OursVariant, INITIAL_CONTENT_2); - } - } -} diff --git a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/VariantsTestCase.java b/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/VariantsTestCase.java deleted file mode 100644 index 0aa62d3d21..0000000000 --- a/org.eclipse.egit.core.test/src/org/eclipse/egit/core/internal/merge/VariantsTestCase.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2015 Obeo and others. - * - * 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 - *******************************************************************************/ -package org.eclipse.egit.core.internal.merge; - -import static org.junit.Assert.assertEquals; - -import java.io.ByteArrayInputStream; -import java.nio.charset.StandardCharsets; -import java.util.Scanner; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.egit.core.project.RepositoryMapping; -import org.eclipse.egit.core.test.GitTestCase; -import org.eclipse.egit.core.test.TestRepository; -import org.eclipse.jgit.api.Git; -import org.eclipse.jgit.lib.Constants; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.team.core.variants.IResourceVariant; -import org.junit.After; -import org.junit.Before; - -public abstract class VariantsTestCase extends GitTestCase { - protected static final String INITIAL_CONTENT_1 = "some content for the first file"; - - protected static final String INITIAL_CONTENT_2 = "some content for the second file"; - - protected static final String MASTER = Constants.R_HEADS + Constants.MASTER; - - protected static final String BRANCH = Constants.R_HEADS + "branch"; - - protected Repository repo; - - protected IProject iProject; - - protected TestRepository testRepo; - - @Before - @Override - public void setUp() throws Exception { - super.setUp(); - - iProject = project.project; - testRepo = new TestRepository(gitDir); - testRepo.connect(iProject); - repo = RepositoryMapping.getMapping(iProject).getRepository(); - - // make initial commit - try (Git git = new Git(repo)) { - git.commit().setAuthor("JUnit", "junit@jgit.org") - .setMessage("Initial commit").call(); - } - } - - @After - @Override - public void tearDown() throws Exception { - testRepo.disconnect(iProject); - testRepo.dispose(); - repo = null; - - super.tearDown(); - } - - protected RevCommit setContentsAndCommit(TestRepository testRepository, - IFile targetFile, String newContents, String commitMessage) - throws Exception { - targetFile.setContents( - new ByteArrayInputStream( - newContents.getBytes(StandardCharsets.UTF_8)), - IResource.FORCE, new NullProgressMonitor()); - testRepository.addToIndex(targetFile); - return testRepository.commit(commitMessage); - } - - protected void assertContentEquals(IResourceVariant variant, - String expectedContents) throws Exception { - assertContentEquals(variant.getStorage(new NullProgressMonitor()), - expectedContents); - } - - protected void assertContentEquals(IStorage storage, String expectedContents) - throws Exception { - try (Scanner scanner = new Scanner(storage.getContents(), - StandardCharsets.UTF_8.name())) { - scanner.useDelimiter("\\A"); - String fileContent = ""; - if (scanner.hasNext()) { - fileContent = scanner.next(); - } - assertEquals(expectedContents, fileContent); - } - } -} |