Package org.eclipse.egit.ui.wizards.clone

Source Code of org.eclipse.egit.ui.wizards.clone.GitCloneWizardTestBase

/*******************************************************************************
* Copyright (C) 2010, Jens Baumgart <jens.baumgart@sap.com>
*
* 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.wizards.clone;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.util.List;

import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.preferences.ConfigurationScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.egit.ui.common.GitImportRepoWizard;
import org.eclipse.egit.ui.common.LocalRepositoryTestCase;
import org.eclipse.egit.ui.common.RepoRemoteBranchesPage;
import org.eclipse.egit.ui.common.WorkingCopyPage;
import org.eclipse.egit.ui.test.TestUtil;
import org.eclipse.equinox.internal.security.storage.PasswordProviderSelector;
import org.eclipse.equinox.internal.security.storage.PasswordProviderSelector.ExtStorageModule;
import org.eclipse.equinox.internal.security.storage.friends.IStorageConstants;
import org.eclipse.jgit.dircache.DirCache;
import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.jgit.util.FileUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;

@SuppressWarnings("restriction")
public abstract class GitCloneWizardTestBase extends LocalRepositoryTestCase {

  protected static final int NUMBER_RANDOM_COMMITS = 100;
  protected GitImportRepoWizard importWizard;
  protected File destRepo;
    // package private for FindBugs
  static SampleTestRepository r;
  @AfterClass
  public static void tearDown() throws Exception {
    r.shutDown();
  }

  public GitCloneWizardTestBase() {
    super();
  }

  protected void cloneRepo(File destinationRepo,
      RepoRemoteBranchesPage remoteBranches) throws Exception {
    remoteBranches.assertRemoteBranches(SampleTestRepository.FIX,
        Constants.MASTER);
    remoteBranches.selectBranches(SampleTestRepository.FIX,
        Constants.MASTER);

    WorkingCopyPage workingCopy = remoteBranches.nextToWorkingCopy();
    workingCopy.setDirectory(destinationRepo.toString());

    workingCopy.assertDirectory(destinationRepo.toString());
    workingCopy.assertBranch(Constants.MASTER);
    workingCopy.assertRemoteName(Constants.DEFAULT_REMOTE_NAME);
    workingCopy.waitForCreate();

    // Some random sampling to see we got something. We do not test
    // the integrity of the repository here. Only a few basic properties
    // we'd expect from a clone made this way, that would possibly
    // not hold true given other parameters in the GUI.
    Repository repository = FileRepositoryBuilder.create(new File(
        destinationRepo, Constants.DOT_GIT));
    // we always have an origin/master
    assertNotNull(repository.resolve("origin/master"));
    // and a local master initialized from origin/master (default!)
    assertEquals(repository.resolve("master"), repository
        .resolve("origin/master"));
    // A well known tag
    assertNotNull(repository.resolve(
        Constants.R_TAGS + SampleTestRepository.v1_0_name).name());
    // lots of refs
    int refs = repository.getAllRefs().size();
    assertTrue(refs >= 4);
    // and a known file in the working dir
    assertTrue(new File(destinationRepo, SampleTestRepository.A_txt_name)
        .exists());
    DirCacheEntry fileEntry = null;
    DirCache dc = repository.lockDirCache();
    fileEntry = dc.getEntry(SampleTestRepository.A_txt_name);
    dc.unlock();
    // check that we have the file in the index
    assertNotNull(fileEntry);
    // No project has been imported
    assertEquals(0,
        ResourcesPlugin.getWorkspace().getRoot().getProjects().length);
  }

  @BeforeClass
  public static void disableSecureStoragePasswordProviders() {
    List availableModules = PasswordProviderSelector.getInstance().findAvailableModules(null);
    StringBuffer tmp = new StringBuffer();
    for (Object module : availableModules) {
      ExtStorageModule storageModule = (ExtStorageModule) module;
      tmp.append(storageModule.moduleID).append(",");
    }
    IEclipsePreferences node = ConfigurationScope.INSTANCE.getNode("org.eclipse.equinox.security");
    node.put(IStorageConstants.DISABLED_PROVIDERS_KEY, tmp.toString());
  }

  @Before
  public void setupViews() {
    TestUtil.showExplorerView();
    importWizard = new GitImportRepoWizard();
  }

  @After
  public void cleanup() throws Exception {
    if (destRepo != null)
      FileUtils.delete(destRepo, FileUtils.RECURSIVE | FileUtils.RETRY);
  }

}
TOP

Related Classes of org.eclipse.egit.ui.wizards.clone.GitCloneWizardTestBase

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.