Package org.eclipse.egit.ui.test.team.actions

Source Code of org.eclipse.egit.ui.test.team.actions.MergeToolTest

/*******************************************************************************
* Copyright (C) 2012, 2013 Robin Stocker <robin@nibor.org>
*
* 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.ui.test.team.actions;

import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.io.File;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.egit.core.Activator;
import org.eclipse.egit.core.JobFamilies;
import org.eclipse.egit.core.internal.indexdiff.IndexDiffCache;
import org.eclipse.egit.core.op.MergeOperation;
import org.eclipse.egit.ui.common.CompareEditorTester;
import org.eclipse.egit.ui.common.LocalRepositoryTestCase;
import org.eclipse.egit.ui.test.ContextMenuHelper;
import org.eclipse.egit.ui.test.TestUtil;
import org.eclipse.jgit.api.MergeResult;
import org.eclipse.jgit.api.MergeResult.MergeStatus;
import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.Before;
import org.junit.Test;

/**
* Test for the "Merge Tool" action on conflicting files.
*/
public class MergeToolTest extends LocalRepositoryTestCase {

  private TestRepository testRepository;

  @Before
  public void setUp() throws Exception {
    File repositoryFile = createProjectAndCommitToRepository();
    Repository repository = lookupRepository(repositoryFile);
    testRepository = new TestRepository<Repository>(repository);
  }

  @Test
  public void useHeadOptionShouldCauseFileToNotHaveConflictMarkers()
      throws Exception {
    IPath path = new Path(PROJ1).append("folder/test.txt");
    testRepository.branch("stable").commit().add(path.toString(), "stable")
        .create();
    touchAndSubmit("master", "master");
    MergeOperation mergeOp = new MergeOperation(
        testRepository.getRepository(), "stable");
    mergeOp.execute(null);
    MergeResult mergeResult = mergeOp.getResult();
    assertThat(mergeResult.getMergeStatus(), is(MergeStatus.CONFLICTING));
    assertThat(mergeResult.getConflicts().keySet(),
        hasItem(path.toString()));

    IndexDiffCache cache = Activator.getDefault().getIndexDiffCache();
    cache.getIndexDiffCacheEntry(testRepository.getRepository());
    TestUtil.joinJobs(JobFamilies.INDEX_DIFF_CACHE_UPDATE);

    SWTBotTree packageExplorer = TestUtil.getExplorerTree();
    SWTBotTreeItem project1 = getProjectItem(packageExplorer, PROJ1)
        .select();

    SWTBotTreeItem folderNode = project1.expand().getNode(FOLDER);
    SWTBotTreeItem fileNode = folderNode.expand().getNode(FILE1);
    fileNode.select();
    ContextMenuHelper.clickContextMenu(packageExplorer,
        util.getPluginLocalizedValue("TeamMenu.label"),
        util.getPluginLocalizedValue("MergeToolAction.label"));

    CompareEditorTester compareEditor = CompareEditorTester
        .forTitleContaining("Merging");

    String text = compareEditor.getLeftEditor().getText();
    assertThat(text, is("master"));
  }
}
TOP

Related Classes of org.eclipse.egit.ui.test.team.actions.MergeToolTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.