/*******************************************************************************
* Copyright (c) 2013 Robin Stocker <robin@nibor.org> 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.ui.internal.push;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.File;
import org.eclipse.egit.ui.common.LocalRepositoryTestCase;
import org.eclipse.egit.ui.test.TestUtil;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.junit.Before;
import org.junit.Test;
/**
* Tests for "Push Tags..." wizard.
*/
public class PushTagsWizardTest extends LocalRepositoryTestCase {
private Repository repository;
private Repository remoteRepository;
@Before
public void createRepositories() throws Exception {
File repositoryFile = createProjectAndCommitToRepository();
File remoteRepositoryFile = createRemoteRepository(repositoryFile);
repository = lookupRepository(repositoryFile);
remoteRepository = lookupRepository(remoteRepositoryFile);
}
@Test
public void pushTag() throws Exception {
try (Git git = new Git(repository)) {
git.tag().setName("foo").setMessage("Foo tag").call();
}
PushTagsWizardTester wizard = PushTagsWizardTester
.startWizard(selectProject());
wizard.selectRemote("push");
wizard.assertNextDisabled();
wizard.checkTag("foo");
wizard.next();
wizard.finish();
assertTagPushed("foo", remoteRepository);
}
private SWTBotTree selectProject() {
SWTBotTree projectExplorerTree = TestUtil.getExplorerTree();
getProjectItem(projectExplorerTree, PROJ1).select();
return projectExplorerTree;
}
private void assertTagPushed(String tagName, Repository remoteRepo)
throws Exception {
ObjectId pushed = remoteRepo.resolve(tagName);
assertNotNull("Expected '" + tagName
+ "' to resolve to non-null ObjectId on remote repository",
pushed);
ObjectId local = repository.resolve(tagName);
assertEquals(
"Expected local tag to be the same as tag on remote after pushing",
local, pushed);
}
}