| /******************************************************************************* |
| * 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.view.synchronize; |
| |
| import static org.hamcrest.Matchers.is; |
| import static org.junit.Assert.assertThat; |
| |
| import java.util.concurrent.TimeUnit; |
| |
| import org.eclipse.egit.core.op.FetchOperation; |
| import org.eclipse.egit.ui.JobFamilies; |
| import org.eclipse.egit.ui.internal.UIText; |
| import org.eclipse.egit.ui.test.JobJoiner; |
| import org.eclipse.egit.ui.test.TestUtil; |
| import org.eclipse.jgit.lib.ConfigConstants; |
| import org.eclipse.jgit.lib.Constants; |
| import org.eclipse.jgit.lib.ObjectId; |
| import org.eclipse.jgit.lib.Repository; |
| import org.eclipse.jgit.lib.StoredConfig; |
| import org.eclipse.jgit.transport.RefSpec; |
| import org.eclipse.jgit.transport.RemoteConfig; |
| import org.eclipse.jgit.transport.URIish; |
| import org.eclipse.osgi.util.NLS; |
| import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton; |
| import org.eclipse.team.ui.synchronize.ISynchronizeView; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * Test for "Push" action in Synchronize view. |
| */ |
| public class SynchronizeViewPushTest extends AbstractSynchronizeViewTest { |
| |
| @Before |
| public void prepare() throws Exception { |
| Repository childRepository = lookupRepository(childRepositoryFile); |
| |
| Repository repository = lookupRepository(repositoryFile); |
| StoredConfig config = repository.getConfig(); |
| RemoteConfig remoteConfig = new RemoteConfig(config, "origin"); |
| remoteConfig.addURI(new URIish(childRepository.getDirectory().getParentFile().toURI().toURL())); |
| remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/origin/*")); |
| remoteConfig.update(config); |
| |
| config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, "master", ConfigConstants.CONFIG_KEY_REMOTE, "origin"); |
| config.setString(ConfigConstants.CONFIG_BRANCH_SECTION, "master", ConfigConstants.CONFIG_KEY_MERGE, "refs/heads/master"); |
| config.save(); |
| |
| FetchOperation fetchOperation = new FetchOperation(repository, remoteConfig, 60, false); |
| fetchOperation.run(null); |
| } |
| |
| @Test |
| public void shouldUpdateTrackingBranchOnPush() throws Exception { |
| makeChangesAndCommit(PROJ1); |
| Repository repository = lookupRepository(repositoryFile); |
| ObjectId headId = repository.resolve(Constants.HEAD); |
| |
| String trackingBranch = Constants.R_REMOTES + "origin/master"; |
| launchSynchronization(Constants.HEAD, trackingBranch, false); |
| |
| SWTBotView viewBot = bot.viewById(ISynchronizeView.VIEW_ID); |
| SWTBotToolbarButton pushButton = viewBot.toolbarButton(UIText.GitActionContributor_Push); |
| JobJoiner jobJoiner = JobJoiner.startListening(JobFamilies.PUSH, 30, TimeUnit.SECONDS); |
| pushButton.click(); |
| TestUtil.openJobResultDialog(jobJoiner.join()); |
| |
| String destinationString = repositoryFile.getParentFile().getName() + " - " + "origin"; |
| SWTBotShell resultDialog = bot.shell(NLS.bind(UIText.PushResultDialog_title, destinationString)); |
| resultDialog.close(); |
| |
| Repository remoteRepository = lookupRepository(childRepositoryFile); |
| ObjectId masterOnRemote = remoteRepository.resolve("master"); |
| assertThat("Expected push to update branch on remote repository", masterOnRemote, is(headId)); |
| |
| ObjectId trackingId = repository.resolve(trackingBranch); |
| assertThat("Expected tracking branch to be updated", trackingId, is(headId)); |
| } |
| } |