/****************************************************************************** * Copyright (c) 2012 GitHub Inc. * 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 * * Contributors: * Kevin Sawicki (GitHub Inc.) - initial API and implementation *****************************************************************************/ package org.eclipse.egit.ui.internal.branch; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.egit.core.Activator; import org.eclipse.egit.ui.JobFamilies; 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.Constants; import org.eclipse.jgit.lib.Repository; import org.junit.Before; import org.junit.Test; /** * Unit tests of {@link BranchProjectTracker} */ public class BranchProjectTrackerTest extends LocalRepositoryTestCase { private static final String BRANCH = "b1"; private Repository repository; @Before public void setup() throws Exception { closeWelcomePage(); File repoFile = createProjectAndCommitToRepository(); assertNotNull(repoFile); repository = Activator.getDefault().getRepositoryCache() .lookupRepository(repoFile); assertNotNull(repository); BranchProjectTracker tracker = new BranchProjectTracker(repository); org.eclipse.egit.ui.Activator.getDefault().getPreferenceStore() .setValue(tracker.getPreference(Constants.MASTER), ""); org.eclipse.egit.ui.Activator.getDefault().getPreferenceStore() .setValue(tracker.getPreference(BRANCH), ""); } @Test public void twoProjectsWithOnlyOneOnBranch() throws Exception { BranchProjectTracker tracker = new BranchProjectTracker(repository); String[] paths = tracker.getProjectPaths(); assertNotNull(paths); assertEquals(0, paths.length); assertNotNull(Git.wrap(repository).branchCreate().setName(BRANCH) .call()); BranchOperationUI.checkout(repository, BRANCH).start(); TestUtil.joinJobs(JobFamilies.CHECKOUT); paths = tracker.getProjectPaths(Constants.MASTER); assertNotNull(paths); assertEquals(2, paths.length); IProject project1 = ResourcesPlugin.getWorkspace().getRoot() .getProject(PROJ1); IProject project2 = ResourcesPlugin.getWorkspace().getRoot() .getProject(PROJ2); assertTrue(project1.exists()); assertTrue(project2.exists()); project1.delete(true, true, new NullProgressMonitor()); assertNotNull(Git.wrap(repository).commit().setAll(true) .setMessage("deleting project").call()); assertFalse(project1.exists()); BranchOperationUI.checkout(repository, Constants.MASTER).start(); TestUtil.joinJobs(JobFamilies.CHECKOUT); paths = tracker.getProjectPaths(BRANCH); assertNotNull(paths); assertEquals(1, paths.length); assertTrue(project1.exists()); assertTrue(project2.exists()); BranchOperationUI.checkout(repository, BRANCH).start(); TestUtil.joinJobs(JobFamilies.CHECKOUT); assertTrue(project1.exists()); assertFalse(project1.isOpen()); assertTrue(project2.exists()); assertTrue(project2.isOpen()); BranchOperationUI.checkout(repository, Constants.MASTER).start(); TestUtil.joinJobs(JobFamilies.CHECKOUT); assertTrue(project1.exists()); assertTrue(project1.isOpen()); assertTrue(project2.exists()); assertTrue(project2.isOpen()); } }